请有人告诉我下面脚本中的连字符操作符是什么?
[ "${MYDATA_OPT-}" ] && set "$MYDATA_OPT" "$@"
data=${MYDATA_VER-1}
是否有一些关于这些运营商的快速文档?
我也在尝试理解下面的脚本
shift $(($OPTIND -1))
和
while getopts vhx: c; do
case "$c" in
v) let data=data+1 ;;
h) usage ; exit 0 ;;
x) . $OPTARG ;;
\?) usage ; exit 2 ;;
*) usage ; exit 2 ;;
esac
done
提前多多感谢。
答案 0 :(得分:2)
Paremeter Expansions下的bash
手册页中引用的表格
3.5.3 Shell参数扩展
<强> $ {参数:-word} 强>
如果参数未设置或为null,则替换单词的扩展。 否则,参数的值将被替换。
生产
${MY_DATA_VER:-1}
如果1
未设置,则将扩展为MY_DATA_VER
,或设置为空字符串。但是,您的示例省略了冒号:
${MY_DATA_VER-1}
这也在手册页中有记载,尽管在特定操作符记录之前(从4.1手册页)开始,只是在一个句子中倾斜:
省略冒号只会导致对未设置的参数进行测试。
因此,在您的示例中,如果未设置1
,则扩展会生成MY_DATA_VER
,或者如果设置了MY_DATA_VER
(可能是空字符串),则扩展会生成shift
。
$OPTIND-1
示例只删除了第一个OPTIND
shell参数。有关getopts
的重要性以及bash
的工作原理说明,请参阅help getopts
手册页或在bash
提示符下尝试{{1}}。