İşletim Sistemi : Ubuntu 16.04.3
Kabuk : Bash 4.3.48
Bunun geçici olarak bir değişkenin içeriğini değiştirmek mümkündür biliyorum var=value commandmuhtemelen olma, IFS= read -r varbunun en dikkate değer vaka.
Ve Greg'in wiki'si sayesinde şunu da anladım:
# Why this
foo() { echo "$var"; }
var=value foo
# And this does work
var=value; echo "$var"
# But this doesn't
var=value echo "$var"
Anlayışımdan kaçan şey şudur:
$ foo() { echo "${var[0]}"; }
$ var=(bar baz) foo
(bar baz)
Biliyorum (ve önceki örneklerin mantığı şu) Bildiğim kadarıyla, bu yazdırmalısınız bardeğil (bar baz).
Bu sadece bana olur mu? Bu amaçlanan davranış mı ve ben bir şey eksik? Yoksa bu bir böcek mi?
export var=(foo bar); echo "${var[0]}"yazdırıyor foo, değil (foo bar).
exportbunu kullanarak gösterir:declare -ax var=([0]="foo" [1]="bar")
export i_am_array=(foo bar); /usr/bin/env | grep i_am_arrayburada hiçbir çıktı yok.
foo() { declare -p var; } ; var=(bar baz) fooverir declare -x var="(bar baz)"onun bir dize olarak değil bir dizi tedavi edilen tasdik edici