특정 패턴이나 루프에서 여러 명령을 반복, 대체 및/또는 반복하고 싶습니다. 원하는 최종 결과는 완전히 다르지 않은 것으로 간주될 수 있습니다 watch
.
나는 이 기본 공식을 변형해 보았으나 뭔가가 빠졌거나 잘못되었습니다.
for x in {1..60};
do
<first command> &&
sleep 1 &&
<second command>;
done
제 생각에는 60번만 반복( do
ing) <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