私はコマンドによって生成されたプロセスを見たいと思いました。この回答これが私に必要なようです。ただし、スクリプトを自己完結したいので、ファイルをインポートするのではなく、プロセスリダイレクトを使用して動的に生成できますか?例えば。
#!/usr/bin/env bash
tasklist="(
command1
if abc; then
command2
elif
command3
fi
command4
)"
source < <(echo "$tasklist") ; wait
私はcat
それをテストし、その後bash
動作します。
#!/usr/bin/env bash
tasklist="(
echo "command1"
echo "command2"
echo "command3"
)"
bash < <(echo "$tasklist")
source
しかし、私はそれをする自信がなかった。以前に悪い経験をしたことがあります。 :/
ありがとうございます。
ベストアンサー1
とにかくBash 4.4以降で動作し、次のものを印刷hi
しますhello
。
cmds='echo hi; var=hello'
source <(echo "$cmds")
echo $var
source <(...)
代わりに、すでに提供されているファイル名をprocesssource < <(...)
に変更する必要があります。source
リダイレクトは必要ありません。
ただし、これらのコマンドを変数に入れると直接実行できます eval "$cmds"
。または、コマンドが固定されている場合は、中間変数について心配することなく直接実行してください。
echo hi; var=hello
echo $var
wait
とにかく、私はあなたがそこで何をしたいのかわかりません。wait
バックグラウンドジョブを待っていますが、ジョブはありません。これらすべての一般的なコマンドは&
フォアグラウンドで実行されずに起動され、シェルはとにかく新しいコマンドを読み取る前にそのコマンドを待ちます。