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

おすすめ記事