2009-05-02 3 views
9

В командной строке bash я устанавливаю переменную myPath =/home/user/dir. Я создал скрипт, в который я помещал echo $ myPath, но он, похоже, не работает. Это ничего не значит. Что я могу сделать для доступа к переменной myPath в скрипте. Если я пишу echo $ myPath в команде, это работает, но не в скрипте.Доступ к переменной в сценарии bash

ответ

8

Попробуйте

export myPath=/home/user/dir 
+1

использовать экспорт var также в вашем профиле bash - если вы хотите, чтобы ваши скрипты обращались к этой переменной. например JAVA_HOME – LukeSolar

+0

Это неверное описание. «Экспорт» не оказывает заметного влияния на текущую оболочку. Это полезно, когда значение переменной должно быть видимым для подпроцессов, запущенных из текущей оболочки. – tripleee

+0

@tripleee Действительно, и если я не пропущу что-то, именно об этом спрашивается вопрос: как получить доступ к переменной из подпроцесса (который выполняет скрипт оболочки). –

18

как вы присвоить переменной? это должно было быть:

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

затем внутри программы оболочки, как:

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

вы получите желаемые результаты.

+1

Если вам нужно использовать это внутри другой строки, вы также можете сделать эхо «Path is $ {myPath}» –

5

Вы также можете сделать это, чтобы установить переменную myPath только для MyScript

myPath="whatever" ./myscript 

Подробные сведения о допущенном хитрой синтаксиса для переменных окружения см: http://www.pixelbeat.org/docs/env.html

1

Вы должны объявить переменную назначение с " экспорт "как таковой:

export myPath="/home/user/dir" 

Это вызовет включение оболочки в переменную enviro запущенных подпроцессов. По умолчанию переменные, которые вы объявляете (без «экспорта»), не передаются подпроцессу. Вот почему вы изначально не получили ожидаемого результата.

Смежные вопросы