我一直在阅读脚本,发现它超出了我的理解范围。该代码段如下:
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
语句满足什么条件。
如果有人可以向我解释这一点,那将真的很有帮助。
预先感谢
答案 0 :(得分:4)
假设您有以下这些变量:
foo=bar
bar=0123456789
代码
echo ${!foo}
0123456789
将为您提供$bar
的价值!这称为间接扩展。这段代码:
echo ${bar:0:3}
012
将返回$bar
的前3个符号,就像python中的slice一样。
现在,结合以下命令:
echo ${!foo:0:3}
012
我们得到$bar
的前3个符号