2013-04-11 7 views
-2

Я написал сценарий bash, который зависит от текущей структуры папок, Что делать, чтобы сделать его доступным в любой другой папке (стать переносной)? Позвольте мне объяснить подробнее: я хочу, чтобы сценарий удалял все файлы в текущем каталоге, которые запущен скриптом, или для удаления всех файлов, находящихся в родительской папке, Какое решение?Как сделать скрипт bash переносимым?

+3

Пожалуйста, покажите нам сценарий. –

+2

Пожалуйста, покажите код. –

+1

Можете ли вы поделиться некоторым кодом? –

ответ

0
cd "$(dirname "$0")" 

Добавить это в верхней части вашего скрипта, чтобы он cd в каталог установлен скрипт в. Затем вы можете использовать относительные пути, и они будут относиться к директории сценария, а не к pwd пользователя.

Если по какой-либо причине dirname не доступен, вот эквивалентный оператор, который вместо этого использует basename.

cd "${0%%/$(basename "$0")}" 
+0

спасибо john, но как мне написать rm/foo/bar/* в моем скрипте, чтобы он работал повсюду? –

+0

Вы можете написать просто 'rm *' –

+0

В какой системе есть базовое имя, но не dirname? –

-1

Не используйте абсолютные пути в своем скрипте.

+0

Не ненавидите. Ответ правильный и уместен из-за отсутствия дополнительной информации в вопросе, почему downvote? –

0

нам нужно больше информации, чтобы дать вам правильный ответ ... НО некоторые советы, если вам нужно, чтобы сделать его портативным будут хранить любые файлы, которые вам нужны на сетевом ресурсе и просто сделать новую папку прочь /, например /temporaryScriptFolder/, и подключить общий сетевой ресурс к этой пустой папке, что позволит вам легко получить доступ к любым необходимым ресурсам.

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