
改行で区切られたコマンドのリストを含む変数がありますCOMMANDS
(つまり、この場合は改行がないことを知っていますが、で区切ることができますNUL
)。例えば、
echo "foo bar"
tail blah.txt
python3 -c 'print(1 + 10)'
私はこれらのそれぞれを呼び出したいのですが、プロセス置換を使用して他のプログラムの引数としてすべてを提供したいと思います。例を続けて入力するには、cat
次のコマンドを実行したいと思います。
cat <(echo "foo bar") <(tail blah.txt) <(python3 -c 'print(1 + 10)')
これを動的に行う方法はありますか?私が考えることができる最善の解決策は、このコマンドを文字列で整理して次の場所に提供することですbash -c
。
bash -c "cat$(echo "$COMMANDS" | while read -r p; do printf ' <(%s)' "$p"; done)"
しかし、これは少し不安定な気がします(引用符のようなエッジ入力ケースを強く処理できるかどうか疑問です)。
試してみたい人のために私が例として使ったものを設定するクイックコマンドがあります。
COMMANDS=$(printf 'echo "foo bar"\ntail blah.txt\npython3 -c "print(1 + 10)"')
echo blah > blah.txt