我有两个shell脚本。一个脚本根据收到的参数动态创建对第二个脚本的调用,然后执行调用。
我的问题是第一个脚本获取的参数可能包含空格,因此我必须在调用script2时引用该参数。
这是问题的一个例子:
script1.sh:
#!/bin/sh
param=$1
command="./script2.sh \"$param\""
echo $command
$command
script2.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
这当然不是我需要的。
这里有什么问题?
TIA。
编辑:
由于tripleee评论中有用的link,我找到了解决方案。这是为了防止任何人。
简而言之,为了解决这个问题,我们应该使用数组作为参数。
script1.sh:
#!/bin/sh
param=$1
args=("$param")
script_name="./script2.sh"
echo $script_name "${args[@]}"
$script_name "${args[@]}"
答案 0 :(得分:1)
使用"$@"
引用所有命令行参数,引用完整。