我的剧本:
echo "input yes or no"
read a
if [ $a = "yes" ] or [ $a = "Yes" ] or [ $a = "YES" ];
then
command
else
command
done
我有一个想法,我将首先转换答案(使用tr A-Z a-z
命令),之后与字符串进行比较......是吗?
答案 0 :(得分:6)
您可以使用shopt -s nocasematch
。
试试这个:
shopt -s nocasematch
echo "Input yes or no"
read a
if [[ $a == "yes" ]]
then
echo "YES"
else
echo "NO"
fi
来自bash
:
nocasematch
如果设置,Bash会以不区分大小写的方式匹配模式 执行大小写时执行匹配或[[条件命令。
答案 1 :(得分:4)
这是一个关于如何在bash 4中进行转换而不进行转换的示例。
您可以使用参数扩展来内联更改$a
变量的值。
#!/bin/bash
echo "input yes or no"
read a
if [ ${a,,} = "yes" ];
then
echo "test 1"
else
echo "test 2"
fi
答案 2 :(得分:2)
您可以使用大多数系统上可用的dialog
工具,它可以在控制台中显示交互式对话框:
if dialog --title example1 --backtitle example2 --yesno "Make a choice!" 7 60
then
echo "YES"
else
echo "NO"
fi
完全绕过用户输入的区分大小写。