Это расширение параметра, которое возвращает длину параметра, или количество элементов в массиве, или количество позиционных параметров.
Прочтите, пожалуйста, руководство к вашей оболочке. Следующее взято из руководства bash
:
$ {# параметр}
Длина в символах значения параметра
заменяется на . Если
параметр
равен*
или@
, подставляемое значение представляет собой количество позиционных параметров. Еслипараметр
представляет собой имя массива с нижним индексом*
или@
, заменяемое значение представляет собой количество элементов в множество. Еслипараметр
является именем индексированного массива с нижним индексом отрицательного числа , это число интерпретируется как относительное к , большему, чем максимальный индекс параметра, поэтому отрицательные индексы отсчитывают от конца массива, а индекс -1 ссылается на последний элемент.
А также , пожалуйста, не делайте привычки работать в интерактивной корневой оболочке. Это в лучшем случае опасно и безрассудно. Используйте sudo
экономно и только в ситуациях, когда требуются повышенные привилегии. Поиграться с bash
- это то, что вы определенно можете сделать как обычный пользователь без полномочий root.
В последние несколько лет я использовал интерактивную корневую оболочку только для ручного добавления одного пользователя для себя.Это 2-минутная работа, и затем мне никогда никогда не нужно снова видеть приглашение #
на этой машине.
cat /some/file | ssh user@machine 'cat >/destination/file
Это не работает, потому что ssh
усекает свой stdin
перед отображением запроса и чтением пароля (безопасность) . Возможный обходной путь - использовать сценарий expect
, который будет взаимодействовать с запущенным процессом ssh
.