如何在 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=$*

或者,在某些 shell 中:(var="$@"不设置 IFS)。

相关内容