${!变量:0:1}在bash中是什么意思?

${!变量:0:1}在bash中是什么意思?,bash,shell,Bash,Shell,我一直在读一个剧本,遇到了一个超出我理解范围的问题。代码片段如下所示: while getopts ":h-:" OPTION; do case "$OPTION" in -) case "$OPTARG" in time) if [ ! -z "${!OPTIND:0:1

我一直在读一个剧本,遇到了一个超出我理解范围的问题。代码片段如下所示:

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语句满足的条件

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


提前感谢

假设您有以下VAR:

foo=bar
bar=0123456789
代码

会给你价值$bar!这就是所谓的间接扩张。该代码:

echo ${bar:0:3}
012
将返回$bar的前3个符号,这类似于python中的切片。 现在,让我们组合这些命令:

echo ${!foo:0:3}
012

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

假设您有以下变量:

foo=bar
bar=0123456789
代码

会给你价值$bar!这就是所谓的间接扩张。该代码:

echo ${bar:0:3}
012
将返回$bar的前3个符号,这类似于python中的切片。 现在,让我们组合这些命令:

echo ${!foo:0:3}
012

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

附录-如果变量是数组标准或关联,则!对mean的更改显示索引。射线=a b c;echo${!ray[@]}输出0 1 2。附录-如果变量是数组标准或关联的,则!对mean的更改显示索引。射线=a b c;echo${!ray[@]}输出0 1 2。