운영체제 : Ubuntu 16.04.3
쉘 : Bash 4.3.48
에서 var=value command
와 같이 변수의 내용을 일시적으로 변경하는 것이 가능하다는 것을 알고 있습니다 IFS= read -r var
.
그리고 Greg의 Wiki 덕분에 다음 사항도 이해합니다.
# 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)"
그 문자열로하지 배열을 치료할 확인