什么是$?在while循环的条件下,下面的脚本中的var

时间:2013-09-10 11:19:03

标签: shell unix sh

#!/bin/sh
host google.com>/dev/null
while [  $? -ne 0 ];
do
sleep 3
done
say "You are now connected to internet"

我猜$?与google.com> / dev / null相关联,使逻辑工作,但我对$的详细说明感兴趣?

提前致谢。

1 个答案:

答案 0 :(得分:2)

我知道这听起来很迂腐,但$?不是变量,而是一个值。 ?是变量的名称,将$放在前面会给出值。

现在,您可以在?中搜索man bash

扩展到最近执行的前台管道的退出状态。

经常进行不必要的测试。 if(和大多数shell)中的whilebash语句测试成功(true)或失败(false)。成功是?的值为0的地方,而当它是某个其他数字(范围为1-255)时失败。 !在很多语言中都意味着“不”,并颠覆了真相:

while ! host google.com>/dev/null
do
    sleep 3
done
echo "You are now connected to internet"

(我必须使用echo,不确定say来自哪里,Perl?)