分页: 1 / 1

shell脚本错误,求助!

发表于 : 2012-03-22 11:09
linuxunix
#!/bin/sh
# func_menu.sh

input()
{
read chioce
case $chioce in
1 | S | s)
return 1;;
2 | L | l)
return 2;;
3 | E | e)
return 3;;
*)
return -1;;
esac
}

echo "1 save"
echo "2 load"
echo "3 exit"
echo

while true
do
echo "please choose"
case input in
1)
echo "save";;
2)
echo "load";;
3)
echo "exit"
break;;
-1)
echo "invalid choice";;
esac
done

echo "done"

exit 0

求解答什么错误。我找了很长时间,但是没有找到错误!什么感谢都行!

Re: shell脚本错误,求助!

发表于 : 2012-03-22 11:52
aerofox

代码: 全选

case input in
下面任何一个分支都不会匹配,因为 input 只是个字符串,它只跟 input 匹配。

Re: shell脚本错误,求助!

发表于 : 2012-03-22 11:53
Think1st
稍微改了,正确的写法。

代码: 全选

#!/bin/sh
# func_menu.sh

input() 
{
read chioce
case $chioce in
1 | S | s)
echo 1; return ;;
2 | L | l)
echo 2; return ;;
3 | E | e)
echo 3; return ;;
*)
echo -1; return ;;
esac
}

echo "1 save"
echo "2 load"
echo "3 exit"
echo

while true
do
echo "please choose"
case $(input) in
1)
echo "save";;
2)
echo "load";;
3)
echo "exit"
break;;
-1)
echo "invalid choice";;
esac
done

echo "done"

exit 0

input要加上$(), 函数要改为echo值返回,具体原因见代码说明。

代码: 全选

#!/bin/bash

# 用return的方式用$?获取,只能return数值
fun1()
{
	return 1
}
fun1
num=$?
echo "num:$num"

# 用echo的方式可以用$(fun2)获取,可以echo String
fun2()
{
	echo 3
	return 
}
num=$(fun2)
echo "num:$num"

是不是所有感谢都行。。送感谢啊你懂的。。 :em03

Re: shell脚本错误,求助!

发表于 : 2012-03-22 12:24
ljj_jjl2008
我改了一个地方,楼主看看。

代码: 全选

#!/bin/sh
# func_menu.sh

input() 
{
read chioce
case $chioce in
1 | S | s)
return 1;;
2 | L | l)
return 2;;
3 | E | e)
return 3;;
*)
return -1;;
esac
}

echo "1 save"
echo "2 load"
echo "3 exit"
echo

while true
do
echo "please choose"
input
case $? in
1)
echo "save";;
2)
echo "load";;
3)
echo "exit"
break;;
-1)
echo "invalid choice";;
esac
done

echo "done"

exit 0

Re: shell脚本错误,求助!

发表于 : 2012-03-22 22:15
linuxunix
是地。什么感谢都行,可以说吗?我一定办到。在自己能力范围内。