poniżej znajduje się kod, który wykonałem w terminalu
[root@idm ~]# x="$(date +%d%m%y)"
[root@idm ~]# echo $x
270217
[root@idm ~]# echo ${#x}
6
Czy ktoś może mi pomóc zrozumieć, dlaczego wynik jest 6
? Co #
właściwie robi zmienna?
Jest to rozwinięcie parametru, które zwraca długość parametru, liczbę elementów w tablicy lub liczbę parametrów pozycyjnych.
Przeczytaj instrukcję obsługi swojej powłoki. Z bash
instrukcji wynika :
${#parameter}
Długość w znakach wartości
parameter
jest podstawiana . Jeśliparameter
jest*
lub@
, podstawiona wartość to liczba parametrów pozycyjnych. Jeśliparameter
nazwa tablicy jest subskrybowana przez*
lub@
, podstawiona wartość to liczba elementów w tablicy. Jeśliparameter
jest to indeksowana nazwa tablicy indeksowana liczbą ujemną, liczba ta jest interpretowana jako względna do jednego większego niż maksymalny indeks parametru, więc indeksy ujemne liczą się od końca tablicy, a indeks -1 odwołuje się do ostatniego elementu .
Ponadto, proszę nie nawykaj pracy w interaktywnej powłoce root. W najlepszym razie jest to niebezpieczne i lekkomyślne. Używaj sudo
oszczędnie i tylko w sytuacjach wymagających podwyższonych uprawnień. Zabawa z bash
czymś, co zdecydowanie możesz zrobić jako zwykły użytkownik inny niż root.
W ciągu ostatnich kilku lat używałem tylko interaktywnej powłoki roota do ręcznego dodawania jednego użytkownika dla siebie. To 2-minutowa robota, a potem już nigdy więcej nie muszę wyświetlać #
monitu na tym komputerze.
#
Operator zwraca długość zmienną. W twoim przypadku zmienna x
długość wynosi sześć.
Aby uzyskać więcej informacji, zajrzyj do Zastępowanie parametrów .