bash shell 脚本中的代码行不起作用

bash shell 脚本中的代码行不起作用

我有一行代码,如下所示:

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 `('

我试图像这样逃避 () :

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 shell 来启动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 上,但我认为特定平台并不重要)

相关内容