아래는 터미널에서 실행한 코드입니다.
[root@idm ~]# x="$(date +%d%m%y)"
[root@idm ~]# echo $x
270217
[root@idm ~]# echo ${#x}
6
누군가 출력이 이와 같은 이유를 이해하도록 도와줄 수 있습니까 6
? #
본질적으로 변수에 어떤 작업이 수행됩니까?
답변1
매개변수의 길이, 배열의 요소 수 또는 위치 매개변수의 수를 반환하는 매개변수 확장입니다.
쉘 매뉴얼을 읽어보십시오. 다음은 bash
매뉴얼에서 발췌한 내용입니다.
${#parameter}
값의 문자 길이가
parameter
대체됩니다.. 또는parameter
인 경우 대체 된 값은 위치 인수의 개수입니다. 배열 이름이고 아래 첨자가 또는 인 경우 대체된 값은 배열의 요소 수입니다. 인덱스 배열 이름이고 아래 첨자가 음수인 경우 숫자는 인수의 최대 인덱스보다 큰 1을 기준으로 해석되므로 음수 인덱스는 배열 끝에서 거꾸로 계산되며 인덱스 -1은 마지막 요소를 나타냅니다. .*
@
parameter
*
@
parameter
그리고,제발대화형 루트 셸에서 작업하는 습관을 들이지 마십시오. 이것은 기껏해야 위험하고 무모한 일입니다. sudo
주의해서 사용하고 높은 권한이 필요한 경우에만 사용하십시오 . bash
루트가 아닌 일반 사용자라면 확실히 시도해 볼 수 있습니다.
지난 몇 년 동안 저는 개별 사용자를 수동으로 추가하기 위해 대화형 루트 셸만 사용했습니다. 이것은 2분짜리 작업이었고 나는안 돼요#
해당 컴퓨터에서 프롬프트를 다시 확인 해야 합니다 .
답변2
이 #
연산자는 변수의 길이를 반환합니다. 귀하의 경우 가변 x
길이는 6입니다.
이것을 봐주세요매개변수 대체더 많은 정보를 알고 싶습니다.