2009-05-02 29 views
9

Bash komut satırında, myPath =/home/user/dir değişkenini ayarlıyorum. Ben echo $ myPath koyduğum bir script yarattım ama işe yaramıyor. Hiçbir şey yankılamaz. Komut dosyasındaki myPath değişkenine erişmek için ne yapabilirim? Komutta echo $ myPath yazarsam çalışır, ancak komut dosyasında değil.Bash komut dosyasında bir değişkene erişme

cevap

8

Eğer değişkeni atamak nasıl oldu

export myPath=/home/user/dir 
+1

Ayrıca dışa aktarma profilinizi bash profilinizde de kullanabilirsiniz - komut dosyalarınızın bu değişkenlere erişmesini istiyorsanız. örneğin JAVA_HOME – LukeSolar

+0

Bu yanıltıcıdır. 'Export'un mevcut kabuk üzerinde görünür bir etkisi yoktur. Değişkenin değeri, geçerli kabuktan başlatılan alt işlemlere görünür hale getirilmesi gerektiğinde yararlıdır. – tripleee

+0

@tripleee Gerçekten de, ve bir şeyi kaçırmadığım sürece, sorunun tam olarak sorduğu şey tam olarak budur: bir alt işlemden (bir kabuk betiği yürüten) bir değişkene nasıl erişilir. –

18

deneyin? olmalıydı:

$ export myPath="/home/user/dir" 

sonra içi gibi bir kabuk programı: Eğer istenen sonuçları elde edersiniz

#!/usr/bin/env bash 
echo $myPath 

.

+1

Bunu başka bir alıntılanan dizenin içinde kullanmanız gerekiyorsa, "Yol $ {myPath}" şeklinde bir echo da yapabilirsiniz –

5

Ayrıca sadece ortam değişkenleri için başvuran zor sözdizimi ayrıntılar için MyScript

myPath="whatever" ./myscript 

için MyPath değişkeni ayarlamak için bu yapabileceğini bkz: http://www.pixelbeat.org/docs/env.html

1

şununla değişken atama ilan etmeli " dışa aktarma "şu şekilde verilir:

export myPath="/home/user/dir" 

Kabuğun değişkeni enviro içerisine dahil etmesi alt işlemlerin niyeti o başlattı. Varsayılan olarak, bildirdiğiniz değişkenler ("dışa aktarma" olmaksızın) alt işlemine iletilmez. Bu yüzden başlangıçta beklenen sonucu almadınız.

İlgili konular