gpt4 book ai didi

shell - 在 shell 脚本中执行带有空格的动态创建的命令

转载 作者:行者123 更新时间:2023-12-04 20:19:37 30 4
gpt4 key购买 nike

我必须编写一个脚本来生成并执行一个命令,该命令带有包含文件名的可变数量的参数。这些文件名可能包含空格,无论有没有空格,一切都必须正常工作。

例如,这个生成的命令可能如下所示:

curl --data-urlencode "js_code@/tmp/some folder/data.txt" http://www.someurl.com

如果我使用硬编码命令并执行它,它会运行良好,有空格和没有空格。但是,如果我在字符串变量中创建命令文本并执行字符串内容,则该命令似乎不考虑引号,仅使用文件的第一部分:

脚本(简化,想象命令字符串是使用复杂规则创建的):
#!/bin/sh
#prepare
command="curl --data-urlencode \"param_value@/tmp/some folder/data.txt\" www.someurl.com"
#execute
$command

结果 :
$ ./test.sh
Warning: Couldn't read data from file ""param_value@/tmp/some", this makes an
Warning: empty POST.
curl: (6) Couldn't resolve host 'folder'

我尝试了不同的东西,切换引号样式,使用 exec 之类的东西,但我无法让它工作。

任何帮助,将不胜感激

谢谢

注意:我应该添加所有这些测试都是在 Cygwin 上完成的。关于路径语法可能很重要。

最佳答案

你应该使用 eval :

eval "$command"

关于shell - 在 shell 脚本中执行带有空格的动态创建的命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8036568/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com