直接通过终端执行以下命令时,其运行正常:
comm -2 -3 <(sort FileOne.txt) <(sort FileTwo.txt) > myFile.txt
但在尝试通过以下方式执行时.sh文件,其给出错误:Syntax error: "(" unexpected
这是我的代码:
#!/bin/bash
##this will return the unique lines from the first file.
comm -2 -3 <(sort FileOne.txt) <(sort FileTwo.txt) > myFile.txt
我像这样运行脚本:
sh ./myfilename.sh
请帮我解决它。
谢谢!
答案1
如果需要,请先运行以下命令使脚本可执行:
chmod +x myfilename.sh
然后,像这样运行脚本:
./myfilename.sh
或者像这样用 bash 明确运行它:
bash myfilename.sh
#!/bin/bash
(由于脚本开头有 bash shebang,因此这前两个命令本质上是相同的。)
切勿这样跑步:
sh myfilename.sh
sh
因为您是使用 Dash ( ) 而不是 Bash运行脚本(因为您的脚本具有特定于 Bash 的语法)。
答案2
答案与已经发布的答案类似,但给出了解释。
我认为您正在运行此脚本sh code.sh
。这意味着您正在使用sh
运行脚本,但第一行(#!/bin/bash
)暗示它是为编写的bash
。
在某些系统上sh
和bash
是相同的,但在其他系统上则不同;当以 调用时sh
,和Bash
会关闭一些非 POSIX 功能。因此,使用正确的 shell 和正确的调用非常重要。
使用bash code.sh
或更好的是,使脚本可执行(chmod a+x code.sh
),然后直接运行它(./code.sh
)