linux中的反引号的疑惑?

# 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两个全局变量造成影响呢?

阅读 5k
1 个回答

``这一般用于括起一些指令用的,
addarray是一个函数,当然不能这么做了,他是你自己声明的/

`` 是执行你里面的指令,比如

function f1
{

ehco "test"

}

f1_ret=f1

终端会提示你这个test not found 而其实是执行了f1函数
-bash: test: command not found

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题