다음의 사용법을 설명해주세요 ${#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
설정하세요.