Bash间接允许获取名称包含在另一个变量中的变量的值。变量示例:
$ red="the color red" $ green="the color green" $ color=red $ echo "${!color}" the color red $ color=green $ echo "${!color}" the color green
一些其他示例演示间接扩展用法:
$ foo=10 $ x=foo $ echo ${x} #Classic variable print foo $ foo=10 $ x=foo $ echo ${!x} #Indirect expansion 10
再举一个例子:
$ argtester () { for (( i=1; i<="$#"; i++ )); do echo "${i}";done; }; argtester -ab -cd -ef 1 #i expanded to 1 2 #i expanded to 2 3 #i expanded to 3 $ argtester () { for (( i=1; i<="$#"; i++ )); do echo "${!i}";done; }; argtester -ab -cd -ef -ab # i=1 --> expanded to $1 ---> expanded to first argument sent to function -cd # i=2 --> expanded to $2 ---> expanded to second argument sent to function -ef # i=3 --> expanded to $3 ---> expanded to third argument sent to function