Shell中的字符串中的字符串

时间:2019-01-11 15:27:05

标签: 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 value1”作为单个字符串。它以“ my”作为一个字符串,以“ value2”作为单独的字符串。

现在,如果我使用

command mycommand /path/location "$str"

然后$ str =“ arg1 =” my valu1“ arg2 =” my value2“”作为一个完整的字符串。 但是我希望命令可以通过程序方式以以下格式执行。

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

该怎么做?

2 个答案:

答案 0 :(得分:1)

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

command mycommand /path/location "$@"

答案 1 :(得分:0)

在支持数组(例如bash)的shell中,您将使用数组:

command mycommand /path/location "${arr[@]}"

如果您的外壳不支持数组,则可以使用位置参数:

command mycommand /path/location "${@}"

一个常见的技巧是使用set重设位置参数。也就是说,您可以这样做:

set -- "arg one" "arg two"