${#1}의 가치는 얼마입니까?

${#1}의 가치는 얼마입니까?

다음의 사용법을 설명해주세요 ${#1}.

getlable ()     
{
    if (( ${#1} == 0 )); then test="-"; else test="${1}"; fi;
}

답변1

${#1}$1함수의 첫 번째 매개변수의 길이(문자)입니다.

이는 (( ${#1} == 0 ))첫 번째 매개변수가 비어 있는지(또는 설정되지 않았거나 설정되지 않은 매개변수가 확장될 때 빈 것으로 나타나는지) 테스트하는 복잡한 방법입니다.

빈 매개변수를 테스트하는 정식 방법은 다음과 같습니다.

[ -z "$1" ]

그러나 더 가능성 있는 목적은 함수에 인수가 제공되었는지 확인하는 것입니다. 이 경우 구문은 다음과 같습니다.

[ "$#" -eq 0 ]

(또는 (($# == 0))스크립트 ksh/bash/zsh를 구체적으로 만들고 싶은 경우)

그러나 두 경우 모두 Bourne과 유사한 쉘에는 다음과 같은 단축키가 있습니다.

test=${1:--} # set test to $1, or "-" if $1 is empty or not provided
test=${1--}  # set test to $1, or "-" if $1 is not provided

이제 목적이 인수가 제공되지 않을 때(stdin을 의미) 전달 cat될 다른 텍스트 유틸리티나 이를 전달하는 것이라면 -아마도 이 중 어떤 것도 전혀 필요하지 않을 것입니다.

바꾸다:

getlable() {
  test=${1--}
  cat -- "$test"
}

그냥 해:

getlable() {
  cat -- "$@"
}

함수의 인수 목록은 있는 그대로 전달됩니다 cat. 인수가 없으면 cat인수가 수신되지 않습니다(그런 다음 단일 인수인 것처럼 stdin에서 읽습니다 -). 하나 이상의 인수가 있는 경우 모두 있는 그대로 전달됩니다 cat.

답변2

${#1}첫 번째 위치 인수의 길이입니다.

실행중인 쉘에서 다음을 사용할 수 있습니다

set -- foo bar
echo ${#1}
3

설정하세요.

관련 정보