두 개 이상의 명령을 반복적으로 교대로 사용하는 방법은 무엇입니까?

두 개 이상의 명령을 반복적으로 교대로 사용하는 방법은 무엇입니까?

특정 패턴이나 루프에서 여러 명령을 반복, 대체 및/또는 반복하고 싶습니다. 원하는 최종 결과는 완전히 다르지 않은 것으로 간주될 수 있습니다 watch.

나는 이 기본 공식을 변형해 보았으나 뭔가가 빠졌거나 잘못되었습니다.

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

제 생각에는 60번만 반복( 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

관련 정보