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 测试你的脚本总是好的建议,这样你就可以很容易地发现上面的错误。
真的很抱歉,我是一个完全菜鸟 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 测试你的脚本总是好的建议,这样你就可以很容易地发现上面的错误。