2014-09-05 2 views
1

У меня есть Баш скрипт, и я вижу в коде

${variable#!} 

что это значит? спасибо большое

ответ

2

удаляет ведущий ! со значением переменной.

примером может быть:

kent$ foo='!!hello' 

kent$ echo ${foo#!} 
!hello 
+1

Технически он не удаляет его * из переменной *, он расширяется до содержимого переменной, удаляя ее. Я знаю, что вы это знаете, но, возможно, стоит упомянуть, что он не меняет содержимое переменной без переназначения. –

+0

@ AdrianFrühwirth вы правы. он не изменит «foo» в этом примере. – Kent

1

демо:

var="!some!some!" 
echo ${var#!} 

печатает

some!some! 
2

См http://www.gnu.org/software/bash/manual/bashref.html#Shell-Parameter-Expansion

$ {параметр # слово}

Слово расширяется, чтобы создать шаблон так же, как при расширении имени файла. Если шаблон соответствует началу расширенного значения параметра, то результатом расширения является расширенное значение параметра с кратчайшим шаблоном соответствия. Если параметр равен '@' или '', операция удаления шаблона применяется поочередно к каждому позиционному параметру, и расширение является результирующим списком. Если параметр представляет собой переменную массива с индексом «@» или «», операция удаления шаблона применяется поочередно к каждому члену массива, и расширение является результирующим списком.

Итак, если $variable начинается с !, он возвращает его содержимое без первого !. Если нет, он вернет $variable.

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