当前位置: 技术问答>linux和unix
新手问一个简单的shell问题,请帮忙。
来源: 互联网 发布时间:2016-08-06
本文导语: 看到一个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 )...
看到一个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”
then
echo “Hi $1, nice name”
else
echo “Never mind”
fi
exit 0
while循环是不是死循环,case语句当输入的不是yes和no的时候是怎么执行的,还有下面的 if语句是yes_or_no返回0时为真?
如果您不嫌烦就帮忙大概讲一个这个程序,谢了。
#!/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”
then
echo “Hi $1, nice name”
else
echo “Never mind”
fi
exit 0
while循环是不是死循环,case语句当输入的不是yes和no的时候是怎么执行的,还有下面的 if语句是yes_or_no返回0时为真?
如果您不嫌烦就帮忙大概讲一个这个程序,谢了。
|
不是死循环,因为你一但输入yes或者no的时候,就从yes_or_no()函数返回了.
y | yes ) return 0;;
n | no ) return 1;;
y | yes ) return 0;;
n | no ) return 1;;
|
执行到read x时,会等待你的输入。
这时如果你输入yes或者no就会返回了,如果是其他的,就打印Answer yes or no,然后继续等待你的输入
这时如果你输入yes或者no就会返回了,如果是其他的,就打印Answer yes or no,然后继续等待你的输入
|
顶之, 自己调试调试