当编写Bash脚本时,如果要从命令行选项标志的一部分中提供值,如何获取该值?
例如,在以下示例中:
例如,在以下示例中:
./script --value=myText --otherValue=100
我该如何将myText
和100
的值分别存储到变量$text
和$num
中?
./script --value=myText --otherValue=100
我该如何将myText
和100
的值分别存储到变量$text
和$num
中?
#!/bin/bash
while getopts ":a:" opt; do
case $opt in
a)
echo "-a was triggered, Parameter: $OPTARG" >&2
;;
\?)
echo "Invalid option: -$OPTARG" >&2
exit 1
;;
:)
echo "Option -$OPTARG requires an argument." >&2
exit 1
;;
esac
done
--longoption
,如果可以坚持使用单字符选项-a
,那么就遵循spraff所说的。你可以进行以下操作:#!/bin/bash
main()
{
[[ $1 =~ "--value=(.*)" ]] && echo "First arg: $1"
value=${BASH_REMATCH[1]}
[[ $2 =~ "--otherValue=(.*)" ]] && echo "Second arg: $2"
other=${BASH_REMATCH[1]}
echo $value
echo $other
#doYourThing
return 0
}
main $*
请确保您正在运行bash 3.0。
$ echo $BASH_VERSION
3.00.16(1)-release
while
循环和shift
匹配的选项。 - glenn jackman