2013-08-19 2 views
0

Я хочу написать крип для пользователя, чтобы установить путь установки. Я использую этотИспользование переменных для путей в оболочке

read $file_path 
cd $file_path 

Но это не меняет на путь, сохраненный на этой переменной. Как я могу установить это именно потому, что это кажется неправильным?

ответ

2

read не использует $, чтобы прочитать переменную. Следовательно, она должна быть

read file_path 
cd $file_path 
+0

такая же проблема, даже если я перехожу к этому – Hobbit1919

+0

@ user2250162 Существует ли путь? Попробуйте сделать 'echo $ file; path ls $ file_path', чтобы узнать, правильно ли он получен. – fedorqui

+0

echo печатает путь, но cd не меняет каталог – Hobbit1919

1

Несколько читать между строками, я думаю, что вы пытаетесь вызвать скрипт, который вы ожидаете, чтобы изменить каталог на вызывающие: Например:

MyScript:

read file_path 
cd "$file_path" 

командной строки:

./myscript 

и вы обнаружите, что он не изменил каталог. Это потому, что вы запускаете скрипт в дочернем процессе. Он изменяет текущий каталог дочернего элемента, а затем возвращается к родительскому объекту, который не изменяется.

Вы должны источника файл, а, то есть запускать команды в процессе тока, а не отдельные один:

. ./myscript 

Да, обратите внимание на дополнительную «точку» . на Начало. Это в общем известно как команда source, и вы можете использовать source вместо «точки» на bash и csh.