Как работают $ {0 ## *} и $ {0% /*}?

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

${0##*/}
${0%/*}

Как они работают?

27 голосов | спросил user785099 11 +04002011-10-11T02:38:48+04:00312011bEurope/MoscowTue, 11 Oct 2011 02:38:48 +0400 2011, 02:38:48

1 ответ


32

Это не регулярные выражения, они являются примерами расширения параметра Bash: подстановка переменной или специального параметра по ее значению. Wooledge Wiki имеет хорошее объяснение .

В основном, в примере, который у вас есть, ${0##*/} переводится как:

для переменной $ 0, а шаблон '/' означает, что два хэша означают от начало этого параметра, удаляют самую длинную (или жадную) совпадение с шаблоном и включают шаблон.

Итак, где $0 - это имя файла, например., $HOME/documents/doc.txt, тогда параметр будет расширен следующим образом: doc.txt

Аналогично, для ${0%/*} шаблон / сопоставляется с параметром end (%) с самым коротким или не жадным match deleted - который в приведенном выше примере даст вам $HOME/documents.

См. также статью о Wash Hacker Wiki .

ответил jasonwryan 11 +04002011-10-11T02:59:28+04:00312011bEurope/MoscowTue, 11 Oct 2011 02:59:28 +0400 2011, 02:59:28

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132