我真的很抱歉我是shell脚本中的总菜鸟,我在互联网上看了一眼,但我找不到答案
=> / home / bee / Scripts / chkbsh:11:/ home / bee / Scripts / chkbsh:语法错误:缺少'))'
#!/bin/sh
for file in $((gawk '/^#!.*( |[/])sh/{printf "%s\0", 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,一切都还可以
答案 0 :(得分:1)
您打开了双括号,但有两个单括号。在第一个(
之后放置一个空格,如下所示:
for file in $( (gawk '/^#!.*( |[/])sh/{printf "%s\0", FILENAME}
^ there
顺便说一下,使用ShellCheck测试脚本总是很好的建议,这样你就可以很容易地发现上面的错误。
答案 1 :(得分:-2)
尝试
for file in `gawk '/^#!.*( |[/])sh/{printf "%s\0", FILENAME} {nextfile}' /usr/bin/* 2>/dev/null | xargs -0`; do
checkbashisms "$file" >/dev/null 2>&1