【发布时间】:2013-11-13 13:22:04
【问题描述】:
抱歉这个无辜的问题 - 我只是想理解......
例如 - 我有:
$ 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通常是一个有用的功能,当您希望完全明确地向读者表明您有意引用函数内部的全局,而不是忘记声明它并隐式将其设为全局.