Yürüttüğünüzde set -a var=99
, üç farklı şey gerçekleşir (sorunuzla ilgili):
- Dışa aktarmak için bir set seçeneği (
-a
) (yaparak ters set +a
) değişkendir.
- Konumsal parametreler seçenekleri izleyenlere "ayarlanır" (olarak
$1
ayarlanır var=99
).
- Alttaki kabuk değişkeni
$_
son parametreye ayarlanır (genişletilmiş).
-a ayarla
Yürütülmesi set -a
işaretleri her bir sonraki (yeni veya değiştirilmiş) (hariç tüm kabuklarında dışa gibi değişkenler csh
ve bunlarla ilişkili kabukları).
$ set -a
$ myvariable=wer
$ env | grep myvariable
myvariable=wer
Bu ayardan kurtarmak için, sadece değiştirmek -
bir için +
:
$ 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 olarak ayarla
Aslında set -- var=99
bir seçeneğin yorumlanmasından kaçınmak gerekir (ve sette bir çizgi vardır -
) , kısa çizgi ( ) ile başlayan değerlere sahiptir .
Argümanların listesini (konumsal parametrelerin listesi), ardından gelenlere ayarlar --
. Bu, tüm makul kabuklarda geçerlidir (csh ve ark. Değil). Konumsal argümanlar "$ @" ile (veya benzer değil "$ *" ile aynı).
$ set -- a=1 b=2 c=3
$ echo "$@"
a=1 b=2 c=3
_ = Last_argument
Ve iç kabuk değişkeninin değeri _
, yürütülen satırın son argümanına değişir. Yani DEĞİL neredeyse tüm kabuklarda (JSH, kül, yash, tire, lksh, mksh, ksh93, attsh ve ders csh ve tcsh ait) bash haricinde gerçek.
$ 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
Lütfen $_
, değerin genişlemeden sonraki değer olduğunu unutmayın :
$ a="A New_Argument"
$ echo Something else to test: "$a"
Something else to test: A New_Argument
$ echo "$_"
A New_Argument
Bu yüzden yürütürken:
$ set -a myvar=99; set | grep 'myvar'
_=myvar=99
'$ _' Kabuk değişkeninin açıklamasını alırsınız. Bu aynı zamanda çalışır:
$ set -a myvar=99; declare -p _
declare -- _="myvar=99"