## * / использовать в сценариях оболочки UNIX - PullRequest
3 голосов
/ 28 июля 2010

Может ли кто-нибудь рассказать о том, как работает ## * / в сценариях оболочки UNIX. Я видел его использование в Korn Shell. Он специально используется для удаления расширения файла.

например. func_write_app_log "o Удаление файла состояния $ {CIE_STATUS_FILE ## * /}"

Здесь предположим, что файл является CIE_STATUS_FILE.DAT, тогда ## * / отобразит CIE_STATUS_FILE

1 Ответ

5 голосов
/ 28 июля 2010

Это также работает в Bash и описано здесь :

$ {string ## substring}

Удаляет самое длинное совпадение $ substring с фронта$ string.

* - это подстановочный знак, который означает совпадение с чем угодно.Ваш пример удаляет путь из файла, а не расширение.

$ bazfile='/foo/bar/baz.txt'
$ echo ${bazfile##*/}
baz.txt

Чтобы удалить расширение, которое вы хотите использовать %:

$ {string% substring}

Удаляет самое короткое совпадение $ substring из задней части $ string.

$ echo ${bazfile%.*}
/foo/bar/baz
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...