如何在两个(或多个)命令之间重复交替?

如何在两个(或多个)命令之间重复交替?

我想反复迭代、交替和/或循环多个命令;以某种模式或循环。期望的最终结果可以被认为并非完全不同watch

我一直在尝试这个基本公式的变体;但有些东西缺失、错误或其他:

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

我认为这只是重复(doing)<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

一种简单的方法是将每个命令放入数组的一个元素中:

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之间添加另一个。<second command>; done

就像是:

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

相关内容