语法错误:“(”意外

语法错误:“(”意外

直接通过终端执行以下命令时,其运行正常:

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

在某些系统上shbash是相同的,但在其他系统上则不同;当以 调用时sh,和Bash会关闭一些非 POSIX 功能。因此,使用正确的 shell 和正确的调用非常重要。

使用bash code.sh或更好的是,使脚本可执行(chmod a+x code.sh),然后直接运行它(./code.sh

相关内容