${!variable:0:1}在bash中是什么意思



我一直在读一个脚本,遇到了一个超出我理解范围的地方。代码片段如下:

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及其提供的相关变量OPTINDOPTARG,但很难找出if语句满足的条件。

如果有人能向我解释这一点,那将非常有帮助。

提前感谢

假设您有以下变量:

foo=bar
bar=0123456789

代码

echo ${!foo}
0123456789

会给你$bar的价值!这叫做间接扩张。这个代码:

echo ${bar:0:3}
012

将返回$bar的前3个符号。这就像python中的切片。现在让我们将这些命令组合起来:

echo ${!foo:0:3}
012

我们得到$bar的前3个符号

最新更新