변수 앞의 '#'연산자는 변수 확장에서 무엇을합니까?


12

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

[root@idm ~]# x="$(date +%d%m%y)"    
[root@idm ~]# echo $x
270217
[root@idm ~]# echo ${#x}
6

누군가 출력 결과를 이해하도록 도울 수 있습니까 6? #변수에 본질적으로 무엇 을하고 있습니까?

답변:


25

매개 변수의 길이, 배열의 요소 수 또는 위치 매개 변수의 수를 반환하는 매개 변수 확장입니다.

쉘 매뉴얼을 읽으십시오. 다음은 bash매뉴얼 에서 가져온 것입니다 .

${#parameter}

값의 문자 길이 parameter는 대체 됩니다. parameteris *또는 @인 경우 대체 된 값은 위치 매개 변수의 수입니다. 또는로 parameter첨자 된 배열 이름 인 경우 대체 된 값은 배열의 요소 수입니다. 인덱스 배열 이름이 음수로 첨자 인 경우 , 그 숫자는 매개 변수의 최대 인덱스보다 1이 큰 것으로 해석되므로, 음수 인덱스는 배열의 끝에서 카운트 백하고 -1의 인덱스는 마지막 요소를 참조합니다 .*@parameter


또한, 제발 대화 형 루트 쉘에서 작업하는 습관을하지 않습니다. 위험하고 무모합니다. sudo상승 된 권한이 필요한 상황에서만 드물게 사용하십시오 . 놀아 보는 것은 bash루트가 아닌 일반 사용자로서 확실히 할 수있는 일입니다.

지난 몇 년 동안 나는 단일 사용자를 직접 추가하기 위해 대화식 루트 셸만 사용했습니다. 2 분 정도의 작업 으로 해당 시스템에서 다시 프롬프트 를 볼 필요가 없습니다# .


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.