LINUX.ORG.RU

Имя и путь к BASH-скрипту


0

0

Поскольку утили basename и dirname отличаются примитивизмом, предлагаю yet another солюшн:

slf_name="${0##*/}"
slf_path="`echo \"$0\" | sed -r 's%^[^/]+$%.%; t; s%^(.+)/[^/]+$%\1%'`"

Во всяком случае, это работает всегда.

★★★★★

> Во всяком случае, это работает всегда.

как оно может работать всегда если по стандарту у седа может не быть поции -r ?

dilmah ★★★★★
()

а чем все-таки плохи basename и dirname? использую именно их и пока проблем не замечал.

cobold ★★★★★
()
Ответ на: комментарий от DRVTiny

> Ну так на то же и GNU/Linux, чтобы в стандартной версии

... dirname и basename работали всегда.

watashiwa_daredeska ★★★★
()

Использовать ${##} в bash-скрипте весто basename это еще куда не шло, но вызывать sed, да еще с "гнутой" опцией, ИМХО, излишне, уж лучше тогда использовать ${%} и условные операторы...

mky ★★★★★
()

Вот это мы пользовать можем:

> slf_name="${0##*/}"

А вот это уже никак?

> slf_path="${0%/*}

И вообще, советую на исходник dirname из coreutils посмотреть и попытаться привести пример, когда он не работает. http://pastebin.ru/291422

/me определенно не понимает автора

balodja ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.