咨询Linux脚本while循环中-a参数作用及-lt含义确认
关于Shell
test命令中-a参数的说明 嘿,你猜的完全没错!在Shell的test命令(也就是你代码里用的[ ... ]结构,这是test的简写形式)中,-a确实就是**逻辑与(AND)**的意思。
结合你的代码具体解释
在你这段循环的条件里:
while [ "$num" -lt 10 -a "$return_val" = 0 ]
这个条件会同时校验两个判断:
- 变量
$num的值小于10("$num" -lt 10) - 变量
$return_val的值等于0("$return_val" = 0)
只有当这两个条件同时成立的时候,while循环才会继续执行下去。
额外的小建议
在现代Shell(比如Bash)里,其实更推荐用&&来替代-a实现逻辑与,可读性会更强,也能避免一些复杂条件下的语法歧义。比如你的条件可以改成这两种写法:
- 拆分两个
[ ... ]判断,用&&连接:
while [ "$num" -lt 10 ] && [ "$return_val" = 0 ]
- 使用Bash的扩展双中括号语法:
while [[ "$num" -lt 10 && "$return_val" = 0 ]]
另外还注意到你代码里的一个小细节:return_val='home/aaaserver/viscaClient [hex]'这行,如果你的意图是执行home/aaaserver/viscaClient [hex]这个命令,并把它的输出赋值给return_val的话,需要用反引号或者$()包裹命令,比如:
return_val=$(home/aaaserver/viscaClient [hex])
不然的话,return_val会被直接赋值成字符串home/aaaserver/viscaClient [hex],而不是命令的执行结果哦。
内容的提问来源于stack exchange,提问作者Alfredo
相关产品推荐
相关产品推荐

