次のコード行があります。
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にありますが、特定のプラットフォームは重要ではないと思います)