浅析shell脚本函数调用和变量间接引用
lu() {
echo "'\$#'=$#"
echo "'\$*'=$*"
echo "'\$@'=$@"
echo 'aaaaaaaaa'
}
str='lu 1 2 3;lu a b'
eval $str # 2次调用函数lu
luther_gliethttp_func1() {
echo 'bbbbbbbbb'
}
a="luther_gliethttp_func1" # a中存放内容
b=luther_gliethttp_func1 #
"luther_gliethttp_func1" # sh程序将该字符串解释为系统命令,经过查询发现是一个函数,所以执行该函数
$a # 将a中内容展开放到这里,即"luther_gliethttp_func1"
# 而"luther_gliethttp_func1"是一个函数名,所以将执行该函数
$b # 将b中存放的内容展开,放到这里然后执行b中的内容
a=b
b='ccccccccc'
echo \$$a
eval echo \$$a
eval c=\$$a
echo $c
exit
luther@gliethttp:~$ ./run.sh
'$#'=3
'$*'=1 2 3
'$@'=1 2 3
aaaaaaaaa
'$#'=2
'$*'=a b
'$@'=a b
aaaaaaaaa
bbbbbbbbb
bbbbbbbbb
bbbbbbbbb
$b
ccccccccc
ccccccccc
阅读(3264) | 评论(0) | 转发(0) |