Bash

如何在兩個(或多個)命令之間反復交 替?

  • March 12, 2017

我想反复迭代、交替和/或循環多個命令;在一種模式或循環中。期望的最終結果可以被認為與watch.

我一直在嘗試這個基本公式的變體;但是缺少、錯誤或其他方面的東西:

for x in {1..60}; 
do 
   *<first command>* && 
   sleep 1 && 
   *<second command>*; 
done

我認為它只是重複(doing )<first command> &&六十次,然後所有後續操作都只是一次,就像平常一樣。我嘗試了一些不同的東西;比如使用{大括號}'引號'"引號"等;試圖將命令組合在一起,但沒有成功。

這對我有用:

   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

你的另外兩個命令是什麼?

一種簡單的方法是將每個命令放入數組的元素中:

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",然後執行。

引用自:https://unix.stackexchange.com/questions/348261