在 GNU bash 版本 3.2.57 上,我看到declare
用于打印数组变量和nullglob
选项之间存在冲突。
这两个在我看来是非常不相关的,但是这是故意什么时候nullglob
启用的?
#!/bin/bash
test () {
local FOO="xyz"
local BAR=("one" "two" "three")
declare -p FOO
declare -a -p BAR
}
echo $(test)
shopt -s nullglob
echo $(test)
shopt -u nullglob
echo $(test)
输出:
declare -- FOO="xyz" declare -a BAR='([0]="one" [1]="two" [2]="three")'
declare -- FOO="xyz" declare -a
declare -- FOO="xyz" declare -a BAR='([0]="one" [1]="two" [2]="three")'
注意中间行,当nullglob
设置时,不会BAR
发出声明。