我有一个将域名作为选项的命令。我有一长串要包含的域名,因此我想将该域列表自动解析到命令中。
例如,最简单的用法是command --option=example-one.com --output=file.ext
. 添加域列表后,最终执行的命令将如下所示command --option=example-one.com ... --option=example-99.io --output=file.ext
(其中“...”将是 97 个更多选项,此处显示缩写)
这可以在 Bash 中进行吗?如果可以,请问它叫什么?
这是我尝试过的到目前为止还没有奏效的方法:
command --option=$(cat domains.txt) --output=file.ext
command "$(while read baddomains ; do echo -n '--option=$baddomains ' ; done < domains.txt)" --output=file.ext
command --option="domains.txt" --output=file.ext
该命令while read baddomains ; do echo -n '--option=$baddomains ' ; done < domains.txt > all-options.txt
确实将格式完美的选项列表输出到新文件 all-options.txt 中,但我不明白如何将选项的输出重定向回命令,而不是文本文件。
域列表包括西里尔字符,如果这很重要的话。
您可以使用参数构建一个数组:
是我所知道的最紧凑的方式。
你尝试的应该是
但这对您不起作用,因为您在子shell中使用了错误的引号,并将整个
$()
引号括在双引号中,因此command
将整体视为一个参数。这些命令无关紧要,但是,如果它们没有正确编码,它们怎么可能是有效的域名?如果它们是 punycoded,shell 将看不到任何西里尔字符。在这两种情况下,它都会愉快地正确处理其输入。