변수 확장에서 변수 앞의 "#" 연산자는 어떤 역할을 합니까?

변수 확장에서 변수 앞의 "#" 연산자는 어떤 역할을 합니까?

아래는 터미널에서 실행한 코드입니다.

[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입니다.

이것을 봐주세요매개변수 대체더 많은 정보를 알고 싶습니다.

관련 정보