OS:Ubuntu 16.04.3
シェル:Bash 4.3.48
のように変数の内容を一時的に変更することが可能であることを知っています。var=value command
おそらくこれIFS= read -r var
が最も顕著なケースです。
そして、グレッグのウィキのおかげで、私も理解しています:
# Why this
foo() { echo "$var"; }
var=value foo
# And this does work
var=value; echo "$var"
# But this doesn't
var=value echo "$var"
私の理解を逃れるのはこれです:
$ foo() { echo "${var[0]}"; }
$ var=(bar baz) foo
(bar baz)
私の知る限り(そして前の例のロジックに従って)、印刷すべきであり、ではbar
ありません(bar baz)
。
これは私だけに起こりますか?これは意図された動作ですか、何か不足していますか?それともバグですか?
export var=(foo bar); echo "${var[0]}"
プリントしますがfoo
、プリントしませんが(foo bar)
。
export
それを使用して示します:declare -ax var=([0]="foo" [1]="bar")
export i_am_array=(foo bar); /usr/bin/env | grep i_am_array
ここには出力がありません。
foo() { declare -p var; } ; var=(bar baz) foo
与えるdeclare -x var="(bar baz)"
その文字列としてではなく、アレイを処置されている確認