関数に複数の単語引数を渡し、簡単な方法で結果をエコーしようとしています。
現在私はこれをしています:
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が設定されていません)。