#!/bin/bash
echo -n "Please input a vowel letter(Aa Ee Li Oo Uu):"
read Key
if [ $Key = "A" -o $Key = "a" ]
then
echo "You input the vowel letter \"A\"."
echo "Thank you."
elif [ $Key = "E" -o $Key = "e" ]
then
echo "You input the vowel letter \"E\"."
echo "Thank you."
elif [ $Key = "I" -o $Key = "i" ]
then
echo "You input the vowel letter \"I\"."
echo "Thank you."
elif [ $Key = "O" -o $Key = "o" ]
then
echo "You input the vowel letter \"O\"."
echo "Thank you."
elif [ $Key = "U" -o $Key = "u" ]
then
echo "You input the vowel letter \"E\"."
echo "Thank you."
else
echo "The letter you input is not a vowel letter."
echo "Try again."
fi
echo "Finished!"
总结一下该shell脚本的格式易错点:
- 变量的创建和引用中,赋值运算符"=“的两边必须没有空白,当需要引用一个变量的内容时,需要使用符号”$"。如果涉及字符串的连接,一般还需要配合花括号"{ }"
- echo命令后若使用了选项"-n",则可以在echo命令输出字符串后把光标保持在该字符串的末尾,等待后面的输出。
- expr 命令既可以把参数中的变量理解为数值变量,也可以把参数中的变量理解为字符串变量。expr 命令判断的依据是: 如果表达式中的运算符号(诸如"+"、"-"等)的左右两边都包含有空格,那么该运算符的两边的变量就被认为是数值变量,否则,就被认为是字符串变量。所以,使用expr命令对表达式求值,必须注意保证每个运算符号的左右两边都留有空格。
- test 命令可以对字符串表达式和算数表达式进行测试
1、test $Key = “A” -o $Key = “a”,-o表示或
2、为了有更好的可读性,可以使用"[ ]“来代替test 命令
3、如[ $Key = “A” -o $Key = “a” ]
4、注意:第3点中,除了比较运算符的两边必须有空格外,还要求”[“的后面和”]"的前面也必须有空格。
对于前面给出的使用if语句判断元音字母脚本,用户还可以使用case语句将它改写为:
#!/bin/bash
echo -n "Please input a vowel letter(Aa Ee Li Oo Uu):"
read Key
case $Key in
[Aa])
echo "You input the vowel letter \"A\"."
echo "Thank you."
;;
[Ee])
echo "You input the vowel letter \"E\"."
echo "Thank you."
;;
[Ii])
echo "You input the vowel letter \"I\"."
echo "Thank you."
;;
[Oo])
echo "You input the vowel letter \"O\"."
echo "Thank you."
;;
[Uu])
echo "You input the vowel letter \"E\"."
echo "Thank you."
;;
*)
echo "The letter you input is not a vowel letter."
echo "Try again."
;;
esac
echo "Finished!"
总结一下该shell脚本的格式易错点:
由于case语句可以使用通配符,因此该脚本使用通配符"[ ]"轻松实现大小写的同时匹配。