함수에 여러 단어 인수를 전달하고 간단한 방법으로 결과를 에코하려고 합니다.
현재 나는 이것을하고 있습니다 :
function myFunction {
multiWordString=""
for ((i=3; i<=$#; i++)); do
multiwordVariable+=" "${!i}
done
echo "multiwordVariable here => $multiwordSTRING"
}
myFunction "$@" otherArgument1 otherArgument2 I am a multivariable element and yeah is rock
이 접근 방식에는 여러 매개변수 삽입, 루프 사용, 문자열 검색을 위한 매개변수 위치 지정 관리 등 여러 가지 단점이 있다는 것을 알 수 있습니다. 이는 매우 근사한 솔루션이 됩니다.
변수에서 문자열을 읽는 것처럼 더 간단한 작업을 수행하겠습니다.
multiWordArgument="here an awesome multiword string"
function file_function {
echo $1
}
myFunction $multiWordArgument
누군가 이 과정에 더 가까이 다가갈 수 있는 방법을 알고 있을까요?
감사해요
답변1
무엇이 잘못되었나요? :
function myFunction { echo "$@"; }
myFunction "$@" Arg1 Arg2 I am a multivariable element and yeah is rock
스크립트를 실행하면 다음이 인쇄됩니다.
$ ./script Hello World!
Hello World! Arg1 Arg2 I am a multivariable element and yeah is rock
또는 모든 인수를 문자열(공백으로 구분)로 변환하려는 경우:
IFS=$' \t\n' var=$*
또는 일부 쉘에서는 ( var="$@"
IFS가 설정되지 않았습니다).