私はGNOME Terminal 3.36.2でUbuntu 20.04LTSを使用しています。 2つのコマンドを実行し、最初のコマンドが成功した場合にのみ2番目のコマンドを実行したいと思います。
proc.sh && results.sh
別の端末ウィンドウで実行したいので、次のように言いました。
gnome-terminal -e 'proc.sh && results.sh'
これはうまくいきます。ただし、-e
使用する必要があるという非推奨の警告が表示されます--
。ただし、どちらも-x
(もはや廃止)と--
同じで、参照されたテキストの内容全体を実行可能ファイル名として解釈するため、「ファイルが見つかりません」というエラーが発生します。
それでは、今これを行う正しい方法は何ですか?
答え1
マニュアルにヒントがあります:
--command
、-e=COMMAND
このオプションの引数をシェルと同じ方法でプログラムと引数に分割し、結果のコマンドラインを端末内で実行します。このオプションは廃止されました。代わりに
--
オプションを終了し、その後に実行されるプログラムと引数を入れます。たとえば、使用する代わりにgnome-terminal -e "python3 -q"
使用することを好みますgnome-terminal -- python3 -q
。シェルを介して実行されないことに注意してください
COMMAND
。単語に分割され、プログラムとして実行されます。シェル構文が必要な場合は、フォーマットを使用してくださいgnome-terminal -- sh -c '...'
。
(源泉、強調内)
実行するコマンドは&&
シェル構文に属します。これを処理するにはシェルが必要です。だから:
gnome-terminal -- sh -c 'proc.sh && results.sh'