İş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 command
muhtemelen olma, IFS= read -r var
bunun 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 bar
değ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)
.
export
bunu kullanarak gösterir:declare -ax var=([0]="foo" [1]="bar")
export i_am_array=(foo bar); /usr/bin/env | grep i_am_array
burada hiçbir çıktı yok.
foo() { declare -p var; } ; var=(bar baz) foo
verir declare -x var="(bar baz)"
onun bir dize olarak değil bir dizi tedavi edilen tasdik edici