sh 스크립트 함수의 매개변수 길이

sh 스크립트 함수의 매개변수 길이

사용하려고 하는 FreeBSD 9.3 RELEASE 서버가 있습니다 sh. 다음과 같이 쉘 스크립트의 함수에 전달된 변수의 길이를 얻으려고 합니다.

#!/bin/sh

myfunc() {
  varlength=${#1}
  echo $varlength
}

test="aaaaa aaaaa"
myfunc $test

위 스크립트는 테스트 변수의 길이인 11을 반환해야 하는데 ${#1}이 작동하지 않는 것 같습니다. 나는 또한 이것을 달성하기 위해 다른 많은 방법을 시도했지만 그것을 알아낼 수 없습니다.

varlength=$(expr ${#1})  does not work
varlength=$(${#1})  does not work
varlength=$(expr \( "X$1" : ".*" \) - 1)  does not work
varlength=$({#1})  does not work

내가 했던 다른 많은 시도는 실패했습니다.

답변1

공백이 포함되어 있기 때문에 $test다음과 같이 말하면

myfunc $test # without quotes

귀하의 함수는 1개 이상의 매개변수를 수신합니다. myfunc 는 여기서 2개의 매개변수를 받습니다 aaaaa. aaaaa

당신은 이것을 원합니다 :

myfunc "$test" # with quotes

경험 법칙:언제나"$variables"정확히 언제, 왜 안되는지 알지 않는 한 귀하의 의견을 인용하십시오 .

관련 정보