我想運行如下命令:
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)