当前位置: 技术问答>linux和unix
关于shell函数返回值
来源: 互联网 发布时间:2017-01-28
本文导语: 大家好,请看以下shell程序: #!/bin/sh yes_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;;...
大家好,请看以下shell程序:
但是为什么我一段程序:
请问两个问题的产生有什么原因?
#!/bin/sh
yes_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"
fi
exit 0
但是为什么我一段程序:
if 0 #问题2.这里无论是什么值,执行的结果都是no
then
echo "yes"
else
echo "no"
fi
请问两个问题的产生有什么原因?
|
shell中的真为0 假为非0 这是和C语言最大的区别。
至于为什么 if 0 或其他数 的结果都是no 。 那是因为if 是用来判断真假的 而你的0 1 没有实际意义。 没有这样的命令或变量 你可以这样。
至于为什么 if 0 或其他数 的结果都是no 。 那是因为if 是用来判断真假的 而你的0 1 没有实际意义。 没有这样的命令或变量 你可以这样。
a=0
if [[ $a ]]
then
echo yes
else
echo no
a=1
if [[ $a ]]
then
echo yes
else
echo no
|
这个和bash版本有关 低版本的bash 不支持 [[运算符。
[]这个运算符有时候会出现问题 比如 [ $a -eq 1 ] 当a没定义的时候会报语法错误 而[[不会
[]这个运算符有时候会出现问题 比如 [ $a -eq 1 ] 当a没定义的时候会报语法错误 而[[不会
|
可以参考 tr 的[[:upper:]] [[:lower:]]
|
布尔型0就是no
|
man 一下