shell脚本错误,求助!

sh/bash/dash/ksh/zsh等Shell脚本
回复
linuxunix
帖子: 16
注册时间: 2012-02-21 19:55

shell脚本错误,求助!

#1

帖子 linuxunix » 2012-03-22 11:09

#!/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

求解答什么错误。我找了很长时间,但是没有找到错误!什么感谢都行!
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30

Re: shell脚本错误,求助!

#2

帖子 aerofox » 2012-03-22 11:52

代码: 全选

case input in
下面任何一个分支都不会匹配,因为 input 只是个字符串,它只跟 input 匹配。
头像
Think1st
帖子: 45
注册时间: 2012-02-07 23:08

Re: shell脚本错误,求助!

#3

帖子 Think1st » 2012-03-22 11:53

稍微改了,正确的写法。

代码: 全选

#!/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
在这里,问题比答案更抢手。
头像
ljj_jjl2008
论坛版主
帖子: 14256
注册时间: 2007-09-16 8:29

Re: shell脚本错误,求助!

#4

帖子 ljj_jjl2008 » 2012-03-22 12:24

我改了一个地方,楼主看看。

代码: 全选

#!/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
linuxunix
帖子: 16
注册时间: 2012-02-21 19:55

Re: shell脚本错误,求助!

#5

帖子 linuxunix » 2012-03-22 22:15

是地。什么感谢都行,可以说吗?我一定办到。在自己能力范围内。
回复