抱歉问的问题很简单-我只是想弄明白...
例如,我有:
$ cat test.sh
#!/bin/bash
declare -f testfunct
testfunct () {
echo "I'm function"
}
testfunct
declare -a testarr
testarr=([1]=arr1 [2]=arr2 [3]=arr3)
echo ${testarr[@]}
当我运行它时,我得到:
$ ./test.sh
I'm function
arr1 arr2 arr3
那么问题来了 - 如果我必须(如果我必须...)在这里插入declare
,为什么要这样做呢?
我可以理解例如declare -i var
或declare -r var
。但是-f
(声明函数)和-a
(声明数组)是用来干什么的呢?
declare
最常见的用法是在函数内部,当没有给出标志时,它的行为与local
相同。对于某些数据类型,例如关联数组,使用declare -A
可能也是必要的。当想要明确告诉读者你有意在函数内部引用全局变量时,declare -g
是一个非常有用的特性,而不仅仅是忘记声明并隐式地将其设置为全局变量。 - Charles Duffy