我试图在函数中传递多字参数,并以简单的方式回显结果。
目前我正在这样做:
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=$*
或者,在某些 shell 中:(var="$@"
不设置 IFS)。