2016-09-08 3 views
-2

Мы должны были получить «имя файла» и «расширение файла» из строкиЧто означает ## и% в оболочке?

[[email protected] Desktop]$ export FILE="filename.txt" 

Следующий синтаксис работает отлично. Однако мы хотели бы понять, как «## ». а также '%. 'работает

[[email protected] Desktop]$ echo ${FILE##*.} 
txt 
[[email protected] Desktop]$ echo ${FILE%.*} 
filename 

Любая помощь будет хорошо

+1

Почему бы не прочитать инструкцию? Для bash это [здесь] (http://linux.die.net/man/1/bash). См. Раздел «Расширение параметров». – kaylum

ответ

0

Ваша точка будет читать bash manual, особенно раздел Shell Parameter Expansion.

Некоторые соответствующие выдержки:

${parameter#word}
${parameter##word}

Слово раскрывается, чтобы получить шаблон так же, как в имени файла расширения (см Filename Expansion). Если шаблон соответствует началу расширенного значения параметра, то результат расширения будет значение параметра с кратчайшим шаблоном согласования (The ‘ # ’ случая) или длинным шаблоном согласования (The ‘ # # ’ кейс) удален. Если параметр ‘ @ ’ или ‘ ’, операция удаления шаблона применяется к каждому позиционному параметру , в свою очередь, и расширение в результате список. Если параметр является переменной массива индексируются @ ‘ ’ или ‘ ’, операция удаления шаблона применяется к каждому члену массива в свою очередь, и расширение в результате список.

${parameter%word}
${parameter%%word}

Слово раскрывается, чтобы получить картину, как и в расширение имени файла. Если шаблон соответствует завершающей части расширенного значения параметра, то результат расширения является значением параметра с кратчайшим шаблоном согласования (The ‘% ’ случая) или сам длинным шаблоном согласования (The ‘% % ’ кейс) удален. Если параметр ‘ @ ’ или ‘ ’, операция удаления шаблона применяется к каждому позиционному параметру , в свою очередь, и расширение в результате список. Если параметр является переменной массива индексируются @ ‘ ’ или ‘ ’, операция удаления шаблона применяется к каждому члену массива в свою очередь, и расширение в результате список.

Смежные вопросы