Case语句在我的shell脚本中不起作用

时间:2012-11-16 17:03:50

标签: linux macos shell switch-statement

我正在尝试为Mac OSX Mountain Lion编写一个shell脚本(10.8.2)。但是,无论我尝试什么,我都无法使用switch语句。他是剧本的简化版本:

#!/bin/bash

while getopts "ei" opt; do
  case $opt in
    e)
      echo "Got option e"
      ;;
    i)
      echo "Got option i"
      ;;
    \?)
      echo "Invalid option: -$opt"
      ;;
  esac
done

无论我尝试什么,我都没有得到任何输出。有任何想法吗?我过去做过这样的剧本。

2 个答案:

答案 0 :(得分:3)

您可能错误地传递了选项,不要忘记-

script.sh -e

请注意,您也应该在无效选项后退出:

\?)
  echo "Invalid option: -$opt"
  exit 1
  ;;

答案 1 :(得分:0)

尝试替换

\?)
  echo "Invalid option: -$opt"
  ;;

使用:

*)
  echo "Invalid option: -$opt"
  ;;