shell脚本中的返回值竞争条件

时间:2014-03-05 01:51:59

标签: linux bash shell sh race-condition

在shell脚本中使用wget并获取其返回值 示例:

wget www.google.com   
if [ $? = 0 ]  
then  
  echo "success"  
else  
  echo "fail"  
fi

Linux运行大量shell脚本,包括上面的一个。假设在shell脚本中执行wget后,OS会控制其他一些shell脚本,当再次开始执行shell脚本时,那么$?返回值不会是wget的返回值。

有没有办法在linux中避免shell脚本返回值竞争条件?

的问候,
Sukhdeep Singh

2 个答案:

答案 0 :(得分:3)

此处没有竞争条件,因为每个脚本都在不同的子shell中运行,而子shell中的变量/环境不会被另一个正在运行的子shell进程覆盖。

答案 1 :(得分:-1)

在shell比较中,对于if语句,您有两个选择: 整数和字符串:

for string you have to use :
if [ "$var" = "mystr" ];then 
 mycode
fi;

对于整数选项,您必须使用:

if [ 1 -eq $myvar ];then 
 mycode 
fi;

注意:

 e = equvalent, l = less, g = great ,t = than
-eq ==
-le <=
-ge >=    
-gt >
-lt <