加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在shell脚本中使用空格执行动态创建的命令

发布时间:2020-12-15 17:01:11 所属栏目:安全 来源:网络整理
导读:我必须编写一个脚本,生成并执行一个包含文件名的可变数量参数的命令.这些文件名可能包含空格,一切都必须正常,有或没有空格. 例如,此生成的命令可能如下所示: curl --data-urlencode "js_code@/tmp/some folder/data.txt" http://www.someurl.com 如果我使用
我必须编写一个脚本,生成并执行一个包含文件名的可变数量参数的命令.这些文件名可能包含空格,一切都必须正常,有或没有空格.

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

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"

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读