매개변수 중 하나가 공백으로 구분된 단어를 포함하는 문자열인 함수가 있습니다.
예를 들어, "foo bar ccc"
이런 종류의 문자열은 "배열"로 취급되어 각 단어를 반복할 수 있다고 생각합니다.
내 질문은, 함수에 매개변수로 전달해야 하는 경우 첫 번째 매개변수가 될 수 있는지, 아니면 문제가 발생하는지입니다.
첫 번째 매개변수로 전달하려고 시도했지만 제대로 작동했지만 알아야 할 문제가 있는지 잘 모르겠습니다.
답변1
이것은 실제 배열이 아닌 문자열입니다. 하지만 그렇습니다. 공백이 포함된 문자열을 첫 번째 매개변수 또는 다른 매개변수로 함수에 전달할 수 있습니다.
set -f
f() {
IFS=' '
for x in $2; do echo "> $x"; done
}
liststr="foo bar ccc"
f something "$liststr" somethingelse
문자열을 분할하기 위해 인용되지 않은 확장을 사용하는 경우 결과 단어도 와일드카드로 표시되어 원하는 것일 수도 있고 아닐 수도 있다는 점을 명심하십시오. set -f
위에서 설명한 대로 비활성화된(전역) 와일드카드를 사용할 수 있습니다 .
그러나 Bash로 표시했으므로 아마도 적절한 배열을 사용한 다음 nameref 변수와 함께 사용할 배열 이름을 전달하거나 함수 호출 시 배열을 별도의 인수로 분할해야 할 것입니다.
바라보다: