bash脚本if/else不区分大小写的答案

blu*_*ndr 1 bash

我在bash脚本中有一个if/else语句,询问是否要从快照ID创建EBS卷.

我想创建一个类似的行:if [ "$from_snapshot" -eq "Y|y" ]但我认为这不会起作用.

这就是我所拥有的:

  if [ "$from_snapshot" -eq "Y" ]
    then
      echo "Enter Snapshot ID: "
      read -r snapshot_id
   elif "$from_snapshot" -eq "y"
      echo "Enter Snapshot ID: "
      read -r snapshot_id
   else 
      echo "No Snapshot Required"
   fi
Run Code Online (Sandbox Code Playgroud)

如果有什么办法我可以更简洁地陈述一下?

ric*_*ici 5

(aka )中-eq运算符用于算术比较.那肯定不是你想要的; 你正在尝试进行字符串比较,这是运算符.(Bash允许您输入,但标准要求.)test[====

使用bash,您最好使用[[条件命令,它允许"glob"式模式比较(如果需要,还可以使用正则表达式).所以你可以使用

if [[ "$from_snapshot" = [Yy] ]]; then 
Run Code Online (Sandbox Code Playgroud)

注意:千万不能把周围的报价[Yy].引用它会使它成为文字字符串而不是模式.