У меня есть Баш скрипт, и я вижу в коде
${variable#!}
что это значит? спасибо большое
У меня есть Баш скрипт, и я вижу в коде
${variable#!}
что это значит? спасибо большое
удаляет ведущий !
со значением переменной.
примером может быть:
kent$ foo='!!hello'
kent$ echo ${foo#!}
!hello
демо:
var="!some!some!"
echo ${var#!}
печатает
some!some!
См http://www.gnu.org/software/bash/manual/bashref.html#Shell-Parameter-Expansion
$ {параметр # слово}
Слово расширяется, чтобы создать шаблон так же, как при расширении имени файла. Если шаблон соответствует началу расширенного значения параметра, то результатом расширения является расширенное значение параметра с кратчайшим шаблоном соответствия. Если параметр равен '@' или '', операция удаления шаблона применяется поочередно к каждому позиционному параметру, и расширение является результирующим списком. Если параметр представляет собой переменную массива с индексом «@» или «», операция удаления шаблона применяется поочередно к каждому члену массива, и расширение является результирующим списком.
Итак, если $variable
начинается с !
, он возвращает его содержимое без первого !
. Если нет, он вернет $variable
.
Технически он не удаляет его * из переменной *, он расширяется до содержимого переменной, удаляя ее. Я знаю, что вы это знаете, но, возможно, стоит упомянуть, что он не меняет содержимое переменной без переназначения. –
@ AdrianFrühwirth вы правы. он не изменит «foo» в этом примере. – Kent