
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なしでスクリプトを実行するシェルインタプリタとは何ですか?