新手问一个简单的shell问题,请帮忙。
看到一个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时为真?
如果您不嫌烦就帮忙大概讲一个这个程序,谢了。
} 看来没人回答了,等我自己再研究吧,进来个人,我结贴给分。 这个程序谁写的。有问题啊。
应该这样 3# sinanjj
是《linux程序设计》里的程序,我看的不太懂,版主帮看看。 #!/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 本帖最后由 sinanjj 于 2010-2-24 11:54 编辑
主要考察shell程序的参数。
LZ自己运行测试下。就知道了。
从书上拷贝的时候”不是英文字符。
怪不得我觉得这么奇怪。。。。
$1是参数1, 以此类推。
$*是所有参数。 我运行了。
* ) echo Answer yes or no这个地方不太懂,还有就是那个while如果在c里应该是个死循环啊。 当然是死循环啊。
不是还有return吗。
就是直接return出函数了。给C是一样的。 应该是return语句就直接跳出函数了。 你这不自己会分析吗。。。。。。。。。。。 本帖最后由 ll_211314 于 2010-2-24 12:02 编辑
呵呵,是你提示了一下想起来了,谢谢斑竹了,给分了。 你的问题解决了么?我也看这本书,最近也看到这里了。是个死循环。我执行了。我也想到了return的返回值了。可是不行,跳不出while循环。
页:
[1]