获取存储在外壳程序脚本中的OPTARG变量中的值

时间:2018-07-23 05:42:00

标签: shell getopts

我有一个脚本,该脚本接受3个参数作为输入,然后继续执行该脚本。我正在使用getopts来检查传递的参数,但是我无法获取脚本内部传递的参数的值。 谁能检查这段代码并建议如何获取在我的脚本内(内部函数和外部函数)传递的参数的值

while getopts ":s:a:c:" params
do
   case $params in
      s) name="$OPTARG" ;;
      a) value="OPTARG" ;;
      c) file="OPTARG" ;;
      ?) print_usage;;
   esac
done

当我尝试访问$ name,$ value和$ file时,我的脚本总是打印我在我的脚本中拥有的帮助信息,即print_usage的内容

预先感谢您的帮助

1 个答案:

答案 0 :(得分:0)

除了错字(在OPTARG中缺少$号),它对我来说还不错:

print_usage() {
  echo "usage"
  exit
}

while getopts ":s:a:c:" params
do
   case $params in
      s) name="$OPTARG" ;;
      a) value="$OPTARG" ;;
      c) file="$OPTARG" ;;
      ?) print_usage;;
   esac
done

echo "name=$name, value=$value, file=$file"

然后

$ bash test.sh -s foo -a bar -c baz
name=foo, value=bar, file=baz

$ bash test.sh -z 
usage