# cat test4
#!/bin/bash
aaa=0
bbb=0
function addarray {
local sum
sum=0
local newarray
aaa=1
bbb=1
aaa=$@
bbb=$#
echo $bbb
}
myarray=(1 2 3 4 5)
result=`addarray ${myarray[*]}`
echo "aaa is $aaa"
echo "bbb is $bbb"
echo "result is $result"
addarray ${myarray[*]}
echo "aaa is $aaa"
echo "bbb is $bbb"
# ./test4
aaa is 0
bbb is 0
result is 5
5
aaa is 1 2 3 4 5
bbb is 5
addarray ${myarray[*]} 这样调用函数才对aaa、bbb两个全局变量造成影响
为什么反引号执行函数后没有对aaa、bbb两个全局变量造成影响呢?
``这一般用于括起一些指令用的,
addarray是一个函数,当然不能这么做了,他是你自己声明的/
`` 是执行你里面的指令,比如
function f1
{
}
f1_ret=
f1
终端会提示你这个test not found 而其实是执行了f1函数
-bash: test: command not found