我想运行如下命令:
command argument --parameter=param1,param2,param3
其中 param1、param2、param3 可以是来自文件 params.txt 的任意数量的参数,每个参数占一行。
我可以创建查看正确的参数列表
echo $(cat common.modules) | tr " " ","
但正在努力
command argument --parameter=$(cat params.txt) | tr " " ","
它的明显变体失败了,可能是因为我无法让这样的东西工作:
echo $($(cat params.txt) | tr " " ",")
非常感谢任何帮助。
答案1
让我们看看问题中的这个命令:
command argument --parameter=$(cat params.txt) | tr " " ","
这将运行命令command argument --parameter=$(cat params.txt)
并将其输出通过管道传输到tr " " ","
.那不是你所需要的。
尝试:
command argument --parameter="$(echo $(cat params.txt) | tr " " "," )"
此处,echo $(cat params.txt)
导致对 的内容进行分词params.txt
。这导致所有参数都以空格分隔。然后,tr " " ","
将空格替换为逗号。
cat
请注意,通过在上面使用我们可以保持 POSIX 兼容性。例如,这意味着该命令将在/bin/sh
Ubuntu 和 Debian 以及类似系统上的默认 shell 下运行。
答案2
关于什么
command argument --parameter=$(tr '\n' ',' < params.txt)