Я довольно смущен следующими регулярными выражениями, которые я нашел в сценарии оболочки:
${0##*/} ${0%/*}
Как они работают?
Это не регулярные выражения, они являются примерами расширения параметра Bash: заменой переменной или специального параметра на ее значение. Wooledge Wiki имеет хорошее объяснение .
В принципе, в примере, который у вас есть, ${0##*/}
переводится как:
для переменной $ 0 и шаблона '/', два хэша означают от начала параметра, удаляют самую длинную (или жадную) совпадение с шаблоном и включают шаблон.
Итак, где $0
– это имя файла, например $HOME/documents/doc.txt
, тогда параметр будет расширен как: doc.txt
Аналогично, для ${0%/*}
шаблон /
сопоставляется с концом параметра ( %
) с удаленным кратчайшим или нежелательным совпадением – который в приведенном выше примере даст вам $HOME/documents
.
См. Также статью о Wiki Hash Hacker .