我写了一个非常简单的案例陈述,但是失败了。我仔细检查了语法,但找不到出错的地方。有人可以告诉我吗?
#!/bin/bash
opt_type=0
function opt_type
{
echo "Opt Porvisioning tool starting..."
echo -e "1. ABC \n2. DEF \n3. HIJ \n"
read opt_input
case $opt_input in
1|abc|ABC)
opt_type=1;
2|def|DEF)
opt_type=2;
3|hij|HIJ)
opt_type=3;
4|exit|Exit) echo "Exiting ..."
*) echo "Please enter a valid entry. Exiting!!"
esac
}
echo $opt_type
./opt_type.sh: line 16: syntax error near unexpected token `)'
./opt_type.sh: line 16: ` 2|def|DEF)
-bash-3.2$
我没有看到任何这样的符号(`)然后为什么抱怨?
答案 0 :(得分:1)
您必须按;;
而不是;
=)
所以:
#!/bin/bash
opt_type=0
function opt_type
{
echo "Opt Porvisioning tool starting..."
echo -e "1. ABC \n2. DEF \n3. HIJ \n"
read opt_input
case $opt_input in
1|abc|ABC)
opt_type=1
;;
2|def|DEF)
opt_type=2
;;
3|hij|HIJ)
opt_type=3
;;
4|exit|Exit) echo "Exiting ..."
;;
*) echo "Please enter a valid entry. Exiting!!"
;;
esac
}
echo $opt_type
答案 1 :(得分:1)
你应该加分号:
case $opt_input in
1|abc|ABC)
opt_type=1;;
2|def|DEF)
opt_type=2;;
3|hij|HIJ)
opt_type=3;;
4|exit|Exit)
echo "Exiting ...";;
*)
echo "Please enter a valid entry. Exiting!!";;
esac
答案 2 :(得分:0)
在Bash中,在case语句中的每个case之后需要两个分号。我还从函数中取出了case语句,因为函数从未被调用过。以下按预期工作
#!/bin/bash
opt_type=0
echo "Opt Porvisioning tool starting..."
echo -e "1. ABC \n2. DEF \n3. HIJ \n"
read opt_input
case $opt_input in
1|abc|ABC) opt_type=1;;
2|def|DEF) opt_type=2;;
3|hij|HIJ) opt_type=3;;
4|exit|Exit) echo "Exiting ...";;
*) echo "Please enter a valid entry. Exiting!!";;
esac
echo $opt_type