Getopts

解析 getopts

  • December 8, 2016

我想轉義argsSOMETEXT中的第一個字元串。getopts但我只能在第一個例子中做到這一點。

我怎樣才能使它在第二個例子中起作用?

while getopts p: opt
do
  case $opt in
  p) result=$OPTARG;;
  esac
done

echo "The result is  $result "

範例 1:

run_test.ksh -p3 SOMETEXT
The result is  3

範例 2:

run_test.ksh SOMETEXT -p3
./run_test.ksh: line 10: result: parameter not set

這是使用getopts. 參數及其參數必須位於任何其他文本之前。

如果您知道第一個詞是SOMETEXT,您可以將其從處理的參數列表中刪除getopts

if [[ 'SOMETEXT' == "$1" ]]
then
   echo "Found SOMETEXT at the beginning of the line"
   shift
fi

while getopts p: opt
do
  case $opt in
  p) result=$OPTARG;;
  esac
done

echo "The result is  $result "

引用自:https://unix.stackexchange.com/questions/328934