нижче - код, який я виконав у терміналі
[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вами - це те, що ви, безумовно, можете зробити як звичайний користувач, який не має коренів.
В останні кілька років я використовував лише інтерактивну кореневу оболонку для ручного додавання єдиного користувача для себе. Це 2-хвилинна робота, і тоді мені більше ніколи не потрібно бачити #підказку на цій машині.
#Оператор повертає довжину змінної. У вашому випадку змінна xдовжина становить шість.
Будь ласка, перегляньте параметр Заміна для отримання додаткової інформації.