同等のものを探したいです。
cmd 1 && cmd 2 && ... && cmd 20
for
ただし、次のようにループ内で表されるコマンドを使用します。
for i in {1..20}
do
cmd $i
done
最初の式と同等のものを見つけるために、2番目の式にどのような変更を提案しますか?
答え1
元のシーケンスと同等のものは次のとおりです。
for i in {1..20}
do
cmd $i || break
done
Amitの答えとの違いは、スクリプトが終了せずにシーケンス/ループに従うことができる基本的なコマンドを実行しようとしていることです。私の提案によると、ループ全体の戻り状態は常にtrueであり、あなたのケースに関連する場合は修正される可能性があります。
答え2
ダーティな行ソリューションが必要な場合は、コマンドを生成してbashに送信できます。
echo "cmd "{1..20}" &&" : | bash
答え3
そのうちの1つが失敗した場合、ループから外れる可能性があります。
for i in {1..55}; do
if ! cmd $i; then
exit 1
fi
done
答え4
これは私が使用せずに端末でタスクを実行する方法です。&&
for i in google.com yahoo.com;do ping -c1 $i;echo $i;done
このコマンドをスクリプトに入れる必要があるのと同じこと
for i in google.com yahoo.com
do echo $i;ping -c1 $i;
done
どちらも私に同じ結果を与えます
google.com PING google.com(172.217.26.174)56(84)バイトのデータ。 google.com(172.217.26.174)の64バイト:icmp_seq=1 ttl=56 time=259 ms
--- google.com ping 統計 --- 1 個のパケット転送、1 個のパケット受信、0% パケット損失、時間 0ms rtt min/avg/max/mdev = 259.794/259.794/259.794/0.000ms yahoo .com PING yahoo .com (98.138.253.109) 56(84)バイトのデータです。 yahoo.com (98.138.253.109) の 64 バイト: icmp_seq=1 ttl=51 time=398 ms
--- yahoo.com ping 統計 --- 1 パケット転送、1 パケット受信、0% パケット損失、時間 0ms rtt 最小/平均/最大/mdev = 398.974/398.974/398.974/0.000 ms