ниже код, который я выполнил в терминале
[root@idm ~]# x="$(date +%d%m%y)"
[root@idm ~]# echo $x
270217
[root@idm ~]# echo ${#x}
6
Может кто-нибудь помочь мне понять, почему вывод 6
? Что по #
существу делает с переменной?
ниже код, который я выполнил в терминале
[root@idm ~]# x="$(date +%d%m%y)"
[root@idm ~]# echo $x
270217
[root@idm ~]# echo ${#x}
6
Может кто-нибудь помочь мне понять, почему вывод 6
? Что по #
существу делает с переменной?
Ответы:
Это расширение параметра, которое возвращает длину параметра, или количество элементов в массиве, или количество позиционных параметров.
Пожалуйста, прочтите руководство по вашей оболочке. Следующее из bash
руководства:
${#parameter}
Длина в символах значения
parameter
подставляется . Еслиparameter
это*
или@
, подставляемое значение является числом позиционных параметров. Еслиparameter
это имя массива, подписанное символом*
или@
, подставляемое значение является количеством элементов в массиве. Еслиparameter
это индексированное имя массива, подписанное отрицательным числом, это число интерпретируется как относительное число, превышающее максимальный индекс параметра, поэтому отрицательные индексы отсчитываются от конца массива, а индекс -1 ссылается на последний элемент. ,
А также, пожалуйста , не заводите привычку работать в интерактивной корневой оболочке. В лучшем случае это опасно и безрассудно. Используйте sudo
экономно и только в ситуациях, требующих повышенных привилегий. Игра с этим bash
- то, что вы определенно можете сделать как обычный пользователь без полномочий root.
В последние несколько лет я использовал только интерактивную корневую оболочку для ручного добавления одного пользователя для себя. Это 2-минутная работа, и мне больше никогда не нужно видеть #
подсказку на этой машине.
#
Оператор возвращает длину переменной. В вашем случае переменная x
длина составляет шесть.
Пожалуйста, посмотрите на Подстановку параметров для получения дополнительной информации.