日期:2014-05-16 浏览次数:20682 次
#!/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
a=0 if [[ $a ]] then echo yes else echo no a=1 if [[ $a ]] then echo yes else echo no
------解决方案--------------------
布尔型0就是no
------解决方案--------------------
这个和bash版本有关 低版本的bash 不支持 [[运算符。
[]这个运算符有时候会出现问题 比如 [ $a -eq 1 ] 当a没定义的时候会报语法错误 而[[不会
------解决方案--------------------
可以参考 tr 的[[:upper:]] [[:lower:]]
------解决方案--------------------