如何在使用变量从另一个脚本中调用shell脚本时引用参数

如何在使用变量从另一个脚本中调用shell脚本时引用参数,shell,Shell,我有两个shell脚本。一个脚本根据收到的参数动态创建对第二个脚本的调用,然后执行调用 我的问题是,第一个脚本获取的参数可能包含空格,因此我必须在对script2的调用中引用该参数 这是问题的一个例子: 脚本1.sh: #!/bin/sh param=$1 command="./script2.sh \"$param\"" echo $command $command #!/bin/sh param=$1 args=("$param") script_name="./script2.sh"

我有两个shell脚本。一个脚本根据收到的参数动态创建对第二个脚本的调用,然后执行调用

我的问题是,第一个脚本获取的参数可能包含空格,因此我必须在对script2的调用中引用该参数

这是问题的一个例子:

脚本1.sh:

#!/bin/sh
param=$1
command="./script2.sh \"$param\""
echo $command
$command
#!/bin/sh
param=$1

args=("$param")
script_name="./script2.sh"
echo $script_name "${args[@]}"
$script_name "${args[@]}"
脚本2.sh:

#!/bin/sh
param=$1
echo "the value of param is $param"
当我跑步时:

./script1.sh "value with spaces"
我得到:

./script2.sh "value with spaces"
the value of param is "value
这当然不是我需要的

这里怎么了

蒂亚

编辑:

由于tripleee评论中的有用信息,我找到了解决方案。这是以防对任何人都有帮助

简而言之,为了解决这个问题,应该使用数组作为参数

脚本1.sh:

#!/bin/sh
param=$1
command="./script2.sh \"$param\""
echo $command
$command
#!/bin/sh
param=$1

args=("$param")
script_name="./script2.sh"
echo $script_name "${args[@]}"
$script_name "${args[@]}"

使用
“$@”
引用引用完整引号的所有命令行参数。

我应该在哪里使用它?我尝试了param=“$@”,但没有解决问题直接使用它,分配给命名变量是有问题的
sh-x./script2“$@”
如果您还想回显该命令,则由于相关原因,这是有问题的。另见