特定のパターンやループで複数のコマンドを繰り返し、置換、および/または繰り返したいと思います。所望の最終結果は完全に変わらないと見なすことができますwatch
。
私はこの基本式を変えてみましたが、何かが欠けているか間違っています。
for x in {1..60};
do
<first command> &&
sleep 1 &&
<second command>;
done
私の考えでは、60回だけ繰り返され、その後のdo
すべて<first command> &&
の後続の操作は通常どおり一度だけ発生します。私は{
中かっこ}
、'
引用符'
、"
引用"
符などを使用してコマンドをグループ化しようとしましたが、成功しませんでした。
答え1
これは私にとって効果的です。
for x in {1..60};
do echo "1" &&
sleep 1 &&
echo "3";
done
これは私にとっても効果的です。
for x in {1..60};
do echo "1";
sleep 1;
echo "3";
done
他の2つのコマンドは何ですか?
答え2
簡単な方法は、各コマンドを配列の1つの要素に入れることです。
commandlist=('echo "hello"' 'echo "howdy"')
その後、繰り返します。
for x in {1..10}; do
index=$((x%2)) # % takes the modulus (or remainder) of integer division
${foo[$index]}
sleep 1
done
${foo[0]}
展開しecho "hello"
て実行します。
答え3
これは、emacsモードのbashまたはzshでも次のように実行できますcontrol+o。
$ set -o emacs
$ echo a
a
$ echo b
b
$ echo c
c
echo a
その後、履歴ナビゲーションを使用して(または適切な)コマンドを取得し、それをcontrol+o複数回マッシュアップします。最後のコマンドに移動するコマンドは、各コマンドに対して繰り返され、再度繰り返される必要がありますcontrol+o。
答え4
大丈夫、わかりそうです。
&& sleep 1
との間にもう1つ追加する必要があると思います。<second command>
; done
それは次のとおりです。
for x in {1..60};
do
<first command> &&
sleep 1 &&
<second command> &&
sleep 1;
done