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

时间:2020-09-17 09:49:31

标签: bash shell

我一直在阅读脚本,发现它超出了我的理解范围。该代码段如下:

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语句满足什么条件。

如果有人可以向我解释这一点,那将真的很有帮助。

预先感谢

1 个答案:

答案 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个符号

相关问题