%20%E3%82%92%E7%BD%AE%E3%81%8D%E6%8F%9B%E3%81%88%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%81%84%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B%3F.png)
同等のものを見つけたい
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
1 行だけの簡単なソリューションが必要な場合は、コマンドを作成して bash に送信できます。
echo "cmd "{1..20}" &&" : | bash
答え3
どちらかが失敗した場合はループから抜け出すことができます
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%、時間 0 ミリ秒 rtt 最小/平均/最大/平均偏差 = 259.794/259.794/259.794/0.000 ミリ秒 yahoo.com PING yahoo.com (98.138.253.109) 56(84) バイトのデータ。yahoo.com (98.138.253.109) からの 64 バイト: icmp_seq=1 ttl=51 時間=398 ミリ秒
--- yahoo.com ping 統計 --- 送信パケット 1 個、受信パケット 1 個、パケット損失 0%、時間 0 ミリ秒 rtt 最小/平均/最大/平均偏差 = 398.974/398.974/398.974/0.000 ミリ秒