Я дуже розгублений щодо таких регулярних виразів, які я знайшов у сценарії оболонки:
${0##*/}
${0%/*}
Як вони працюють?
Я дуже розгублений щодо таких регулярних виразів, які я знайшов у сценарії оболонки:
${0##*/}
${0%/*}
Як вони працюють?
Відповіді:
Це не регулярні вирази, це приклади розширення параметра Баша: підміна змінної або спеціального параметра його значенням. У Wooledge Wiki є гарне пояснення .
В основному, у прикладі, який ви маєте, ${0##*/}перекладається як:
для змінної $ 0 і шаблону '/' два хеша означають з початку параметра, видаляють найдовший (або жадібний) збіг - до і включаючи шаблон.
Отже, звідки $0ім'я файлу, напр. $HOME/documents/doc.txt,, Параметр буде розгорнуто як:doc.txt
Аналогічно, для ${0%/*}, шаблон /узгоджується з кінцем параметра (the %), при цьому видаляється найкоротше або не жадне збіг - що у наведеному вище прикладі дасть вам $HOME/documents.
Дивіться також статтю у Вікі Баша Хакера .
*) вказує на те, що все, що стосується шаблону, буде включено. Отже, для початку параметра, #він знаходиться зліва та в кінці %, працюючи в інший бік справа.
sh.
basenameіdirname? : D