&&はバックグラウンドスクリプトで&と一緒に使用することはできません。

&&はバックグラウンドスクリプトで&と一緒に使用することはできません。

このスクリプトがあります。

cd foo && git pull && node server.js & && pid=$! && echo "$pid"

しかし、bashはこの部分が好きではないようです。& &&...それで、私は次のように変更しました。

set -e
cd foo
git pull
node server.js &
pid=$!
echo "$pid"

&&しかし、二重アンパサンドを代わりに使用する方法はありますか?

おそらく質問の目的は、これら2つが同じかどうかです。

cd foo && git pull && node server.js & && pid=$! && echo "$pid"
cd foo && git pull && ( node server.js & ) && pid=$! && echo "$pid"

私の推測では、いいえ同じ..

ベストアンサー1

cmd1 && cmd2cmd1「実行、成功すれば実行」を意味しますcmd2。実行が完了するまでコマンドが成功したかどうかはわかりません。したがって、1つのコマンドをバックグラウンドに置き、次のコマンドの実行が最初のコマンドの成功に依存するようにすることは意味がありません。

あなたが本当に欲しいのは「cmd1バックグラウンドで起動してから実行」しcmd2ているようです。これだけですcmd1 & cmd2

したがって、必要なコマンドは次のようになります。cd foo && git pull && node server.js & pid=$! && echo "$pid"

おすすめ記事