Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 为什么两个elif状态虽然相似,但行为却不同?_Bash - Fatal编程技术网

Bash 为什么两个elif状态虽然相似,但行为却不同?

Bash 为什么两个elif状态虽然相似,但行为却不同?,bash,Bash,出于某种原因,此elif语句有效 elif[$muteStat=='no'];然后 而这 elif[$muteStat=='no'];然后 返回此错误 ./volumeControl.sh:第34行:[否:未找到命令 为什么会这样 更新:在映像中,未注释语句返回错误 代码: 假定$muteState的值为no。鉴于错误消息抱怨命令[no all one word not found,括号后的空格似乎不是简单的空格 查看脚本的字符代码:od-cscript.sh并查找有趣的字符。实际上,由于它只是

出于某种原因,此elif语句有效

elif[$muteStat=='no'];然后

而这

elif[$muteStat=='no'];然后

返回此错误

./volumeControl.sh:第34行:[否:未找到命令

为什么会这样

更新:在映像中,未注释语句返回错误

代码:


假定$muteState的值为no。鉴于错误消息抱怨命令[no all one word not found,括号后的空格似乎不是简单的空格

查看脚本的字符代码:od-cscript.sh并查找有趣的字符。实际上,由于它只是第34行,请尝试sed-n34pscript.sh | od-c

此外,[命令中的操作数会进行分词和文件名生成,因此应引用变量

if [ "$muteStat" = yes ] ...
    :
elif [ "$muteStat" = no ] ...
此外,==运算符是对[]的bash扩展,因此如果您使用的是bash,那么最好使用[[


此外,数值比较使用不同的运算符:[$-eq 1]]

您有完整的示例吗?请提供更多的上下文。如果可能的话,这意味着周围的代码。我很好奇您正在使用哪个编辑器来编辑您的脚本。目前,我正在使用nano,它最近开始使用linux。感谢您现在查看它!谢谢,302 240出现了,而不是一个普通的空间,它看起来是一个不间断的空间。不知道那是怎么来的,再次感谢你的帮助!
if [ "$muteStat" = yes ] ...
    :
elif [ "$muteStat" = no ] ...