Linux Bash脚本:条件表达式中的语法错误
我是新来的邻居,遇到语法错误。请看一看,也许有人可以帮忙。我正在尝试运行以下脚本:Linux Bash脚本:条件表达式中的语法错误,linux,bash,ubuntu,Linux,Bash,Ubuntu,我是新来的邻居,遇到语法错误。请看一看,也许有人可以帮忙。我正在尝试运行以下脚本: #!/bin/bash main () { dpkg -query -s $1 &> /tmp/pkg_verify if grep -q 'not installed' /tmp/verify then echo -e "\e[31m$1 is not installed. installing..\e[0m" apt-get install $1 echo -e "\e[31
#!/bin/bash
main () {
dpkg -query -s $1 &> /tmp/pkg_verify
if grep -q 'not installed' /tmp/verify
then
echo -e "\e[31m$1 is not installed. installing..\e[0m"
apt-get install $1
echo -e "\e[31m$1 is not installed and ready to use\e[0m"
else
echo -e "\e[31m$1 is already installed\e[0m"
fi
rm -f /tmp/pkg_verify
for test in $@; do main $test; shift; done
echo -e "\e[31mDone\e[0m"
}
for test in $@; do main $test; shift; done
echo -e "\e[31mDone\e[0m"
但当我尝试执行它时,我面临着无尽的循环:
grep: /tmp/verify: No such file or directory
16 is already installed
我真的试图找到答案,试图将if
更改为两种不同的形式,但没有成功。有人知道这是为什么吗?我应该更改什么以便脚本可以运行
提前感谢所有帮助人员。替换此行:
if [[ -z `grep 'not installed' /tmp/pkg_verify` ]]
在这种情况下:
if grep -q 'not installed' /tmp/pkg_verify
完整脚本:
替换此行:
if [[ -z `grep 'not installed' /tmp/pkg_verify` ]]
在这种情况下:
if grep -q 'not installed' /tmp/pkg_verify
完整脚本:
替换此行:
if [[ -z `grep 'not installed' /tmp/pkg_verify` ]]
在这种情况下:
if grep -q 'not installed' /tmp/pkg_verify
完整脚本:
替换此行:
if [[ -z `grep 'not installed' /tmp/pkg_verify` ]]
在这种情况下:
if grep -q 'not installed' /tmp/pkg_verify
完整脚本:
您有两个else
紧随其后。那不行。它要么是elif条件
,要么只是一个else
无限循环是由main
递归调用自身引起的
第三,当使用“$@”中的i进行迭代时,shift
可能是一个bug
若要调试脚本(无语法错误),请在开头附近使用set-x
。您有两个其他。那不行。它要么是elif条件
,要么只是一个else
无限循环是由main
递归调用自身引起的
第三,当使用“$@”
中的i进行迭代时,shift
可能是一个bug
若要调试脚本(无语法错误),请在开头附近使用set-x
。您有两个其他。那不行。它要么是elif条件
,要么只是一个else
无限循环是由main
递归调用自身引起的
第三,当使用“$@”
中的i进行迭代时,shift
可能是一个bug
若要调试脚本(无语法错误),请在开头附近使用set-x
。您有两个其他。那不行。它要么是elif条件
,要么只是一个else
无限循环是由main
递归调用自身引起的
第三,当使用“$@”
中的i进行迭代时,shift
可能是一个bug
要调试脚本(无语法错误),请在开头附近使用set-x
。@nubhava感谢您的快速重播,正如您所说,我更改了if条件,当我尝试运行它时,我得到:第21行:意外toke'else'附近的语法错误第21行:“else”有idie吗?p、 你能解释一下我写的if条件有什么问题吗?你的条件的问题是,grep
的输出中有空格,因此if条件在-z
之后有多个参数,它只需要一个参数。在我看到完整的脚本之前,很难说代码中其他地方出现错误的原因。在问题中发布您的完整脚本,以便我检查并提出建议。@nubhave:根据您的要求,我在更改if条件后发布脚本,请检查问题。看起来您现在有2个其他块,这就是问题所在。此外,我在我的回答中发布了您的完整脚本(已修复)。@nubhava感谢您的快速重播,正如您所说,我更改了if条件,当我尝试运行它时,我得到:第21行:意外toke'else'附近的语法错误第21行:“else”有idie吗?p、 你能解释一下我写的if条件有什么问题吗?你的条件的问题是,grep
的输出中有空格,因此if条件在-z
之后有多个参数,它只需要一个参数。在我看到完整的脚本之前,很难说代码中其他地方出现错误的原因。在问题中发布您的完整脚本,以便我检查并提出建议。@nubhave:根据您的要求,我在更改if条件后发布脚本,请检查问题。看起来您现在有2个其他块,这就是问题所在。此外,我在我的回答中发布了您的完整脚本(已修复)。@nubhava感谢您的快速重播,正如您所说,我更改了if条件,当我尝试运行它时,我得到:第21行:意外toke'else'附近的语法错误第21行:“else”有idie吗?p、 你能解释一下我写的if条件有什么问题吗?你的条件的问题是,grep
的输出中有空格,因此if条件在-z
之后有多个参数,它只需要一个参数。在我看到完整的脚本之前,很难说代码中其他地方出现错误的原因。在问题中发布您的完整脚本,以便我检查并提出建议。@nubhave:根据您的要求,我在更改if条件后发布脚本,请检查问题。看起来您现在有2个其他块,这就是问题所在。此外,我在我的回答中发布了您的完整脚本(已修复)。@nubhava感谢您的快速重播,正如您所说,我更改了if条件,当我尝试运行它时,我得到:第21行:意外toke'else'附近的语法错误第21行:“else”有idie吗?p、 你能解释一下我写的if条件有什么问题吗?你的条件的问题是,grep
的输出中有空格,因此if条件在-z
之后有多个参数,它只需要一个参数。在我看到完整的脚本之前,很难说代码中其他地方出现错误的原因。在问题中发布您的完整脚本,以便我检查并提出建议。@nubhave:根据您的要求,我在更改if条件后发布脚本,请检查问题啊,看起来您现在有2个其他块,这就是问题所在。此外,我在我的回答中发布了您的完整脚本(已修复)。顺便说一下,您的“班次”