读书人

关于shell函数返回值,该怎么处理

发布时间: 2012-04-15 18:39:21 作者: rapoo

关于shell函数返回值
大家好,请看以下shell程序:

Perl code
#!/bin/shyes_or_no() {  echo "Is your name $* ?"  while true  do    echo -n "Enter yes or no: "    read x    case "$x" in      y | yes ) return 0;;      n | no )  return 1;;      * )       echo "Answer yes or no"    esac  done}echo "Original parameters are $*"if yes_or_no "$1" #问题1.当函数yes_or_no返回值为0,条件为真,当yes_or_no返回值为0,条件反而为假then  echo "Hi $1, nice name"else  echo "Never mind"fiexit 0


但是为什么我一段程序:
Perl code
if 0 #问题2.这里无论是什么值,执行的结果都是nothen  echo "yes"else  echo "no"fi


请问两个问题的产生有什么原因?



[解决办法]
shell中的真为0 假为非0 这是和C语言最大的区别。

至于为什么 if 0 或其他数 的结果都是no 。 那是因为if 是用来判断真假的 而你的0 1 没有实际意义。 没有这样的命令或变量 你可以这样。
Assembly code
a=0 if [[ $a ]] then echo yeselse echo noa=1if [[ $a ]] then echo yeselse echo no
[解决办法]
布尔型0就是no
[解决办法]
这个和bash版本有关 低版本的bash 不支持 [[运算符。

[]这个运算符有时候会出现问题 比如 [ $a -eq 1 ] 当a没定义的时候会报语法错误 而[[不会
[解决办法]
可以参考 tr 的[[:upper:]] [[:lower:]]
[解决办法]
探讨

请问tr是什么意思?谢谢!

读书人网 >UNIXLINUX

热点推荐