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が設定されていません)。

おすすめ記事