如何在bash中使用getopt进行长时间解析

时间:2018-02-15 13:08:56

标签: bash shell scripting getopt getopt-long

我有一个用例,我必须在shell脚本中执行不同方法的功能。 用户将调用我的shell脚本 我必须阅读选项的价值,并在此基础上调用方法。 请在下面找到示例代码。

./ testfile.sh --option1 value1 --option2 value2

#!/bin/bash
#
# Example of how to parse short/long options with 'getopt'
#

OPTS=`getopt --long option1,option2 -n 'parse-options' -- "$@"`

if [ $? != 0 ] ; then echo "Failed parsing options." >&2 ; exit 1 ; fi

echo "$OPTS"
eval set -- "$OPTS"

opt=""
id=""

while true; do
echo "Inside while $1 $2"
  case "$1" in
    --option1) echo $1; shift ;;
    --option2 ) echo $2; shift ;;
    -- ) shift; break ;;
    * ) break ;;
  esac
done

echo "Value for opt  $opt"
echo "Value for id  $id"

1 个答案:

答案 0 :(得分:0)

我们可以使用getopt实现长选项调用的解析。 我的用例: - 当我们只提供长选项时,我们如何使用getopt,因为getopt可以解析短路,例如' -o,-k。 -p等'以及" - opt, - pass等"等长期选项。 当我们使用getopt时,下面是它的默认语法

'getopt -o 'o,p,k' --long opt,pass -n 'parse-options' -- "$@"'

上面的行将解析long和short选项。 我的用例的解决方案是我们通过短引号的单引号,如下所示,下面的行只会解析长选项,即选择并通过。

'getopt -o '' --long opt,pass -n 'parse-options' -- "$@"'