watch 명령을 사용할 때만 쉘 스크립트 오류가 발생합니다.

watch 명령을 사용할 때만 쉘 스크립트 오류가 발생합니다.

2초마다 일부 텍스트 파일을 읽고 쓰는 쉘 스크립트를 만들려고 합니다. (감시 없이) 스크립트를 단독으로 실행하면 정상적으로 실행됩니다. 그러나 를 사용하여 실행하면 watch -n 2 ./feedcmd.sh다음 오류가 발생합니다 ./feedcmd.sh: 2: ./feedcmd.sh: Syntax error: "(" unexpected.

문구 주위에 괄호를 추가해 보았지만 여전히 성공하지 못했습니다.

이것은 내 쉘 스크립트입니다.

$(tmux capture-pane -t "$tes3-server" -pS 32768 > one.txt)
output=$(comm -23 <(sort one.txt) <(sort two.txt))
len=`expr "$output" : '.*'`
if [ "$len" -gt 0 ]; then
       $(echo "$output" > fin.txt)
       $(cat one.txt > two.txt)
       $(echo 0 > done.d)
fi
echo "done"

답변1

귀하의 스크립트는 그렇지 않습니다셰르본. 이 명령은 프로세스 대체를 지원하지 않는 생성자 1을watch 사용하여 실행될 수 있습니다 ./bin/sh<(command)

$ cat myscript
cat <(echo foo)

$ watch -n 2 ./myscript

==>

Every 2.0s: ./myscript                                                                   t400s: Sun Mar  7 09:09:04 2021
./myscript: 1: ./myscript: Syntax error: "(" unexpected

하지만

$ cat myscript
#!/bin/bash
cat <(echo foo)

$ watch -n 2 ./myscript

==>

Every 2.0s: ./myscript                                                                   t400s: Sun Mar  7 09:07:32 2021
foo

  1. 보다 정확하게는 명령을 전달한 sh -c ' ... '다음 다음에 설명된 규칙을 따릅니다.Shebang 없이 스크립트를 실행하는 쉘 인터프리터는 무엇입니까?

관련 정보