1
#!/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 相关联,使逻辑工作,但我对 $? 的详细描述感兴趣

提前致谢。

4

1 回答 1

2

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

现在您可以搜索?in man bash

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

它经常被不必要地测试。 ifand (和大多数 shell)while中的语句bash测试成功(真)或失败(假)。成功是?0 的值,失败是其他数字(范围为 1-255)。 !和许多语言一样,意思是“不”,并且颠倒了事实:

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

(我不得不使用echo,不知道say从哪里来,Perl?)

于 2013-09-10T12:34:33.580 回答