Определение переменной при запуске сценария оболочки?

Я пытаюсь написать сценарий оболочки, который в основном входит в определенную папку и выполняет некоторые действия. Загвоздка здесь в том, что имя папки является переменным, т.е. /path/to/variable

Я подумал, можно ли запустить сценарий оболочки из командной строки, а также определить переменную в той же строке? Что-то вроде:

./run.sh $id=456

Когда он запускается, он принимает путь как /path/to/$id и, следовательно, /path/to/456.


person Angad    schedule 01.09.2011    source источник


Ответы (2)


Вы можете запустить скрипт в следующем стиле:

./run.sh 465

Затем вы можете получить доступ к содержимому параметра внутри скрипта с помощью $1 (1-й параметр), $2 (2-й параметр) и так далее. Чтобы изменить каталог, используйте cd /path/to/$1 BTW: $# возвращает количество параметров.

Другой способ - использовать аргументы, как здесь: http://www.linux.com/archive/feature/118031 Итак, вы можете запустить свой скрипт следующим образом: ./run.sh -d 465 (где -d означает каталог)

person The Bndr    schedule 01.09.2011
comment
... потому что это был простой вопрос? Соответствует ли ответ вашим потребностям? - person The Bndr; 01.09.2011

Наоборот.

id=456 ./run.sh
person Ignacio Vazquez-Abrams    schedule 01.09.2011
comment
Возможно, стоит пояснить, что это автоматически экспортирует переменную id со значением 456 в сценарий run.sh (и только в этот сценарий и любые программы, которые он запускает, а не во все, что запускается после него). - person Jonathan Leffler; 01.09.2011