crop.sh:第 3 行:意外标记 `(' 附近的语法错误 crop.sh:第 3 行:`foreach 文件 (`ls *.pdf`)'

crop.sh: line 3: syntax error near unexpected token `(' crop.sh: line 3: `foreach file (`ls *.pdf`)'

接下来,我写了我的 bash 文件,crop.sh。但是,当我在 windows 中 运行 时出现此错误。我用的是赛格温。我还安装了 git 并使用了 mingw64。我搜索了很多但无法解决这个问题。

#!/bin/csh

foreach file (`ls *.pdf`)

 pdfcrop --ini $file $file

end

错误信息是:

crop.sh: line 3: syntax error near unexpected token `('
crop.sh: line 3: `foreach file (`ls *.pdf`)'

危险,威尔·罗宾逊。人们普遍认为 csh is considered harmful.

就是说,您可以 (SHOULD!) 使用 glob 而不是解析 ls 的输出,无论您的 shell 是什么。我没有看到你的文件名,但我怀疑问题可能是文件名中的非标准字符。

相反,试试这个:

#!/bin/csh

foreach file ( *.pdf )

  pdfcrop --ini "$file" "$file"

end

或者更好,在 POSIX shell:

中完成
#!/bin/sh

for file in *.pdf; do
    pdfcrop --ini "$file" "$file"
done

您使用了 bash 标签并提到了 bash,但您的代码是 csh。不确定您是否需要 bash 解决方案,或修复您的 csh,但您当然可以这样做:

#!/bin/bash

for file in *.pdf; do
   pdfcrop --ini "$file"  "$file"
done

由于 csh 通常被认为不适合编写脚本,这可能是一个不错的选择。