상위 답변에 대한 후속 조치이 문제, 내 생각에 난 할 수있어:
1) 명령 정의:
cmd='for x in $(my_command | grep keyword | cut -d" " -f1); do command2 "arguments" $x; done'
2) 루프는 다음과 같이 실행됩니다.
while true; do "$cmd"; sleep 1; done
그러나 위의 방법은 작동하지 않으며 다음과 같은 결과가 나타납니다.
zsh: command not found for x in $(......
zsh: command not found for x in $(......
zsh: command not found for x in $(......
...
어떤 아이디어가 있나요?
밝히다:
실행하면 for x in $(my_command | grep keyword | cut -d" " -f1); do command2 "arguments" $x; done'
완벽하게 작동합니다.
부록:
eval
다음과 같이 사용하면 작동한다는 것을 알았습니다 .
while true; do eval "$cmd"; sleep 1; done
cmd
매초마다 명령 실행
답변1
동일한 셸에서 실행할 명령을 준비하려면 함수를 사용하세요.
cmd () {
for x in $(my_command | grep keyword | cut -d" " -f1); do
command2 "arguments" $x
done
}
while true; do cmd; sleep 1; done
답변2
따옴표로 묶으면 $cmd
쉘이 정확히 같은 이름으로 명령을 실행하도록 요청하는 것입니다. "for x in $(..."라는 명령은 없습니다. 사실 내 시스템에는 "for"라는 명령도 없습니다. 이는 쉘 키워드입니다. 무언가를 실행하려면 를 $cmd
사용해야 합니다 eval
.