shell 脚本中缺少“))”

Missing "))" in shell script

真的很抱歉,我是一个完全菜鸟 shell 脚本,我在网上找了找也没找到答案

=> /home/bee/Scripts/chkbsh: 11: /home/bee/Scripts/chkbsh: Syntax error: Missing '))'

#!/bin/sh
for file in $((gawk '/^#!.*( |[/])sh/{printf "%s[=11=]", FILENAME} {nextfile}' /usr/bin/* 2>/dev/null) | xargs -0); do
checkbashisms "$file" >/dev/null 2>&1
if [ "$?" -gt 0 ]
then
    sed -i 's:^#!.*/bin/sh:#!/bin/bash:' "$file";
    echo "$file" has been processed!
fi
done
echo ":3"

如果我在#!/bin/bash中更改#!/bin/sh一切正常

尝试

for file in `gawk '/^#!.*( |[/])sh/{printf "%s[=10=]", FILENAME} {nextfile}' /usr/bin/* 2>/dev/null | xargs -0`; do
checkbashisms "$file" >/dev/null 2>&1

您有左双括号,但有两个单右括号。在第一个 ( 之后放置一个 space,像这样:

for file in $( (gawk '/^#!.*( |[/])sh/{printf "%s[=10=]", FILENAME}
              ^ there

顺便说一句,用 ShellCheck 测试你的脚本总是好的建议,这样你就可以很容易地发现上面的错误。