我一直在读一个脚本,遇到了一个超出我理解范围的地方。代码片段如下:
while getopts ":h-:" OPTION; do
case "$OPTION" in
-)
case "$OPTARG" in
time)
if [ ! -z "${!OPTIND:0:1}" -a ! "${!OPTIND:0:1}" = "-" ]; then
Time="${!OPTIND}"
OPTIND=$(( $OPTIND + 1 ))
fi ;;
esac
;;
h) Usage 0;;
# More code
esac
done
shift $((OPTIND - 1))
我正在与if
条件作斗争。它到底是什么意思?
我知道getopts
及其提供的相关变量OPTIND
和OPTARG
,但很难找出if
语句满足的条件。
如果有人能向我解释这一点,那将非常有帮助。
提前感谢
假设您有以下变量:
foo=bar
bar=0123456789
代码
echo ${!foo}
0123456789
会给你$bar
的价值!这叫做间接扩张。这个代码:
echo ${bar:0:3}
012
将返回$bar
的前3个符号。这就像python中的切片。现在让我们将这些命令组合起来:
echo ${!foo:0:3}
012
我们得到$bar
的前3个符号