bash -c “v = değer; echo $ v ”hiçbir şey görüntülemez


Yanıtlar:


18

Burada iki kabuk var:

  • Arama kabuğu, bunu çalıştırdığınız etkileşimli kabuk

  • Giriş yapmayan, etkileşimli olmayan kabuk, bash -c

Şimdi, sorun, çift tırnak içinde değişkenler ilgili değerlerine genişletilir, bu herhangi bir kabuk için geçerlidir.

Yani, çift tırnak kullandığınız gibi, değişken genişleme, $vaslında çağrılan kabukta değil, çağrılan kabukta gerçekleşir. Ancak bildiri, v=valueetkileşimli olmayan kabuk üzerinde gerçekleşiyor.

Yani, toplamda, çağrılan kabukta tanımlanan ve çağrılan kabukta (önceden) genişletilen değişkene sahipsiniz. Değer değişkeni çağrı kabuğunda ayarlanmadığından, çıktıda hiçbir şey almazsınız.

Şimdi, değişken tanım ve genişlemeyi ortaya çıkan kabukta yer alacak şekilde yapmak için tek tırnak kullanın veya kaçın $:

$ bash -c "v=value; echo $v"

$ bash -c 'v=value; echo $v'
value

$ bash -c "v=value; echo \$v"
value

1

Çift tırnak ile $vetkileşimli kabuk yerini alır. Tek tırnak kullanın:

$ bash -c 'v=value;echo $v'
value
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.