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