를 실행 set -a var=99
하면 세 가지 별개의 일이 발생합니다 (질문과 관련됨).
- vars를 내보내기 위한 설정 옵션 (
-a
) (을 수행 set +a
하여 반대 ).
- 위치 매개 변수는 옵션 다음에 따라
$1
설정됩니다 (로 설정 var=99
).
- 쉘 변수 밑줄
$_
은 마지막 매개 변수 (확장)로 설정됩니다.
설정 -a
의 실행 set -a
마크 모든 후속 (신규 또는 변경) (제외한 모든 쉘에서 수출로 변수 csh
와 어떤 관련 껍질).
$ set -a
$ myvariable=wer
$ env | grep myvariable
myvariable=wer
이 설정에서 복구하려면 다음 -
을로 변경하십시오 +
.
$ set +a
$ unset myvariable # to erase it from the environment if it
# was exported before the change of set +a
$ myvariable=456544654 # A new value of the variable.
$ env | grep "variable" # No output means the var does not exist
# in the current environment
var = 99로 설정
실제로 set -- var=99
대시 ( -
)로 시작하는 값으로 옵션 (및 세트가 많음)의 해석을 피해야 합니다.
인수 목록 (위치 매개 변수 목록)을 이후의 목록으로 설정합니다 --
. 이것은 모든 합리적인 쉘에서 유효합니다 (csh 등은 아님). 위치 인수는 "$ @"(또는 유사한 "$ *", 같지 않음)으로 인쇄됩니다.
$ set -- a=1 b=2 c=3
$ echo "$@"
a=1 b=2 c=3
_ = 마지막 인수
그리고 내부 쉘 변수의 값은 _
실행 된 행의 마지막 인수로 변경됩니다. 즉 NOT 거의 모든 쉘에서 (JSH, 화산재, YASH, 대시, lksh, mksh, 경우 ksh93, attsh 및 코스 CSH와 tcsh에서의) bash는 제외하고 사실.
$ echo one two last argument
one two last argument
$ echo "$_"
argument
$ echo This is a new: last_argument
This is a new: last_argument
$ echo "$_"
last_argument
의 값이 있습니다 $_
확장 후 값이 :
$ a="A New_Argument"
$ echo Something else to test: "$a"
Something else to test: A New_Argument
$ echo "$_"
A New_Argument
이것이 당신이 실행할 때의 이유입니다.
$ set -a myvar=99; set | grep 'myvar'
_=myvar=99
쉘 변수 '$ _'에 대한 설명을 얻습니다. 이것은 또한 작동합니다 :
$ set -a myvar=99; declare -p _
declare -- _="myvar=99"