Bash-意外标记'fi';
运行此脚本时,出现以下错误:Bash-意外标记'fi';,bash,if-statement,parameters,parameter-passing,argument-passing,Bash,If Statement,Parameters,Parameter Passing,Argument Passing,运行此脚本时,出现以下错误: #!/usr/bin/env bash if [[ $# -eq '0' ]] then var=command if [[ ${var} -eq '0' ]] then do something else do something else fi fi if [[ $# -eq '1' ]] usage; fi if [[ $# -eq '2' ]] if [[ "$1
#!/usr/bin/env bash
if [[ $# -eq '0' ]]
then
var=command
if [[ ${var} -eq '0' ]]
then
do something
else
do something else
fi
fi
if [[ $# -eq '1' ]]
usage;
fi
if [[ $# -eq '2' ]]
if [[ "$1" != "-r" ]]
then
usage;
fi
if [[ "$2" =~ some_pattern ]]
then
do something
else
echo "Pattern is in an improper format. Please enter it as: correct_pattern, and try again"
exit 1
fi
usage="Usage: meta_script.sh -r correct_pattern
-r for reset is used to manually pass a parameter instead of using the default"
exit 1
fi
在我检查参数数量是否等于1的第一个
if
语句中,我输入了一个then
,但是我得到了与上面相同的错误,除了then
而不是fi
。几乎就好像无论我把什么放在哪里,我都会得到这些错误,当我删除它们试图修复它时,我会得到另一堆类似的错误。请帮我更正这个脚本。谢谢 关于该部分:
./meta_script.sh: line 31: syntax error near unexpected token `fi'
./meta_script.sh: line 31: `fi'
第一个if
语句缺少then
。把它放进去会让你克服这个错误:
if [[ $# -eq '2' ]]
if [[ "$1" != "-r" ]]
then
你会发现我把then
放在同一行,因为这是一个很好的习惯,意识到如果和那么总是在一起(与相同,而和做)。它还允许您在任何给定的终端上看到更多行“有用”代码:-)
我还去掉了2
周围的无用引号,因为$#
总是返回一个数值。我建议只对字符串使用引号。你错过了一个然后如果[$\eq'1']
和如果[$\eq'2']
。试试吧,谢谢!我会试试看,然后告诉你。如果这行得通,请回答,我会接受的。再次感谢@埃坦雷斯纳:成功了!我现在又犯了一个错误,但本质上,它是不一样的,它起作用了。谢谢你能帮我纠正这个错误吗?当我给它错误数量的参数时就会发生这种情况。它不去使用,而是退出。可能会发生什么?我将在这里修改代码以反映“工作”代码,希望您能帮助我。谢谢@埃坦雷斯纳:没关系。我成功了!再次感谢您的帮助:)
if [[ $# -eq 2 ]] ; then
if [[ "$1" != "-r" ]] ; then