環境変数でコマンドを実行し、内部に末尾のアンパサンドが機能するようにするにはどうすればよいですか?

環境変数でコマンドを実行し、内部に末尾のアンパサンドが機能するようにするにはどうすればよいですか?

私が呼び出す小さなスクリプトがありますprompt-to-run

prompt_acc=''

read -p 'run `'"$1"'`
' -i "$1" -e prompt_acc

$prompt_acc

これにより、コマンドを入力するスクリプトを生成できますが、スクリプト全体を停止せずに実行を編集またはスキップする機会も提供されます。

私は別のスクリプトを持っています。 「実行したい」と呼びますlong-running-script。自分の端末で実行したいです。なぜなら、いくつかの入力を受けた後にそこに座ってより多くのテキストを連続的に出力するからです。prompt-to-run複数の呼び出しを含むスクリプトの先頭から実行した後、元の端末に戻って次の呼び出しを実行できるようにしたいですprompt-to-run

long-running-script内部に新しい端末を開いたので、手動で入力してください。

long-running-script &

実行したいプログラムを実行し、元の端末のプロンプトに戻ります。ただし、prompt-to-run 'long-running-script &'端末プロンプトは返されません。これは、コマンドが環境変数内で実行されるため、$prompt_acc私が望むように解釈されないためです。

prompt-to-runどちらか一方または両方を変更したり、long-running-script必要なものを取得する方法はありますか?

ベストアンサー1

あなたは正しいです。その理由は、環境変数内で実行されるからです。したがって、後続の完全なテキスト(含む&)はに引数として渡されますlong-running-script

回避策は、ファイルの$prompt_acc &代わりにファイル$prompt_accに呼び出しを入れることです。これにより、prompt-to-runスクリプトを実行しないことを決定しても&邪魔になりません。

おすすめ記事