Bashシェルスクリプトのコード行は機能しません。

Bashシェルスクリプトのコード行は機能しません。

次のコード行があります。

grep -f <(awk '{ print $1 }' fileA.txt | sed 's/\(.*\),/\1 /' ) fileB.txt > fileC.txt

端末で実行すると機能しますが、*.shスクリプトに追加すると、次のエラーが発生します。

format_input.sh: line 12: syntax error near unexpected token `('

次のようにescape()しようとしています。

grep -f <\(awk '{ print $1 }' fileA.txt | sed 's/\(.*\),/\1 /' \) fileB.txt > fileC.txt

しかし、まだ何らかのエラーが発生します。

format_input.sh: line 12: (awk: No such file or directory
sed: ): No such file or directory

私は何が間違っていましたか?

ベストアンサー1

これが正解かどうかはわかりませんが、コメントよりもコードをもっと含めたいと思いました。私の考えでは、Bashではなくシェルを使って起動するようですformat_input.sh。私はこれをより簡単なラインでテストしました。ファイルにはfile次の内容が含まれています。

$ cat file
content
more content
this is a line
another one

コマンドラインでテストした内容は次のとおりです。

$ grep ON <(tr '[a-z]' '[A-Z]'< file)
CONTENT
MORE CONTENT
ANOTHER ONE

私はこの行を私が名前付きスクリプトに入れて、script次のように始めます。

$ bash script
CONTENT
MORE CONTENT
ANOTHER ONE

$ sh script
script: line 1: syntax error near unexpected token `('
script: line 1: `grep ON <(tr '[a-z]' '[A-Z]'< file)'

(これはCygwinにありますが、特定のプラットフォームは重要ではないと思います)

おすすめ記事