shell中字符串中的字符串

shell中字符串中的字符串,shell,unix,Shell,Unix,下面一行是我的代码示例 command mycommand /path/location arg1="my valu1" arg2="my value2" 当我通过硬编码参数值来执行此命令时,它会起作用 但当我使用以下代码格式时: for i in "$@" do str+="$i " done command mycommand /path/location $str where $str="arg1="my valu1" arg2="my value2"" 它不接受“my value

下面一行是我的代码示例

command mycommand /path/location arg1="my valu1" arg2="my value2"
当我通过硬编码参数值来执行此命令时,它会起作用

但当我使用以下代码格式时:

for i in "$@" do
str+="$i " 
done
command mycommand /path/location $str

where $str="arg1="my valu1" arg2="my value2""
它不接受“my value1”作为单个字符串。它将“my”作为一个字符串,“value2”作为一个单独的字符串

现在如果我使用

command mycommand /path/location "$str"
然后,$str=“arg1=”my Value1“arg2=“my value2”作为一个完整字符串。 但我想命令应该通过程序的方式以下面的格式执行

command mycommand /path/location arg1="my valu1" arg2="my value2"

如何执行此操作?

不要尝试将参数附加到字符串中,只需将“$@”传递到脚本中的实际命令:

command mycommand /path/location "$@"

在支持数组(如bash)的shell中,可以使用数组:

command mycommand /path/location "${arr[@]}"
如果shell不支持数组,则可以使用位置参数:

command mycommand /path/location "${@}"
常见的方法是使用
设置
重置位置参数。也就是说,您可以:

set -- "arg one" "arg two"

我有多个参数,但我想使用一些特定的参数集。因此,$@将包含所有不适用于我的参数您自己的代码
因为“$@”do
中的i正在将每个参数附加到
str
这就是我正在做的。但是得到了提到的问题。这不是重点,你展示了一个代码,它试图将每个参数附加到
str
,但是现在注释
,我想使用一些特定的参数集,因此存在不匹配。