while 루프에서 마지막 명령을 사용하는 방법은 무엇입니까?

while 루프에서 마지막 명령을 사용하는 방법은 무엇입니까?

이 코드를 수정하는 방법을 알고 싶습니다.

ls
while [ 1 > 0 ]
do
fc -s
sleep 1
done

에 대해서는 fc -s다음을 참조하세요.이 문제더 알아보기.

내 질문은 다음과 같습니다.

  1. 어떻게 작동하나요? 이름을 붙이면 test.sh.
  2. fc -s첫 번째 행을 표현 하려면 ls어떻게 수정해야 합니까? 즉, 달리고 ls나서 잠시 잠을 자고, 그런 ls다음 잠시 잠을 자고 싶습니다. ls물론 다른 명령을 통해 배치할 수도 있습니다.

답변1

당신이 원하는 것을 정확하게 수행하는 watch 명령을 사용하는 것은 어떻습니까? 매뉴얼에는 이렇게 나와 있습니다.

watch - 주기적으로 프로그램을 실행하고 출력을 전체 화면에 표시합니다.

매초마다 이 명령을 실행합니다.

watch -n 1 command

답변2

다음을 시도해 볼 수 있습니다.

 $ cat script.sh
 while sleep 1
 do
     eval "$@"
 done
 $ ls
 $ sh script.sh !!

스크립트는 전달된 명령을 계속해서 실행합니다. !!마지막 명령이 계산됩니다.


명령을 스크립트의 일부로 만들고 여러 위치에 입력하고 싶지 않은 경우 다음을 시도하십시오.

 $ cat script.sh
 cmd=ls
 while sleep 1
 do
     eval "$cmd"
 done
 $ sh script.sh

관련 정보