Bashは次の関数を呼び出します。
myFunction "1 2"
myFunction()
{
echo "$1"
echo "$2"
}
これにより、「1 2」と空白の行が印刷されます。ある行1と別の行2に印刷されるようにパラメータをどのように解析しますか?myFunction "1" "2"
パラメータが別の変数に保存されているため呼び出すことはできません
ベストアンサー1
関数が受け取る最初の引数を空白文字に分割したいようです。これを行うには、スペースを区切り文字として使用するように分割を構成し、glob部分を無効にしてから、分割+glob演算子を使用できます。
myfunction() {
local - # make changes to options local to the function.
# needs bash 4.4 or newer.
local IFS=' ' # split on space only
set -o noglob # disable glob part
set -- $1 # split+glob invoked on $1 by leaving that $1 unquoted,
# result stored in $1, $2... using set --
printf '%s\n' "$1"
printf '%s\n' "$2"
}
myfunction "1 2"