Linux에서 다중 단어 문자열을 매개변수로 전달하는 방법

Linux에서 다중 단어 문자열을 매개변수로 전달하는 방법

함수에 여러 단어 인수를 전달하고 간단한 방법으로 결과를 에코하려고 합니다.

현재 나는 이것을하고 있습니다 :

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가 설정되지 않았습니다).

관련 정보