В GNU bash, версия 3.2.57, я вижу конфликт между использованием declare
для печати переменной массива и опцией nullglob
.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
не излучается.
Ах, интересно. Я не понимал, что мне нужно процитировать '$()'. Я приму ваш ответ через несколько минут, когда это позволит. Благодаря! – rgov