次のコマンドを実行したいと思います。
command argument --parameter=param1,param2,param3
そのうち、param1、param2、param3はparams.txtファイルのパラメータ数に制限がなく、各パラメータは1行を占めます。
正しいパラメータのリストを表示できます。
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などのシステムのデフォルトシェルでコマンドが実行されることを意味します。