小编Tim*_*gan的帖子

如何用引号,多字符串作为参数替换?

我正在尝试将包含多个引用单词的字符串变量替换为命令的参数.

因此,给出以下示例脚本(注意shebang中的-x,这会导致输出记录到stderr),

#!/bin/bash -x

myArg="\"hello\" \"world\""
echo "string is:" $myArg

exit
Run Code Online (Sandbox Code Playgroud)

这给了我们,

+ myArg='"hello" "world"'
+ echo 'string is:' '"hello"' '"world"'
string is: "hello" "world"
+ exit
Run Code Online (Sandbox Code Playgroud)


第二行显示实际传递给命令的内容; bash为字符串中的每个单词添加了单引号.如果我改为引用"$ myArg",那么对于整个字符串而不是每个单词都会出现相同的情况.

现在,想象一下echo,我们将字符串传递给一个程序,其中一些参数需要引用模式,例如"*"(不能由shell扩展).

为了澄清,我不希望在扩展期间添加单引号.我怎么能实现这个目标?

bash shell quotes command-line-arguments

13
推荐指数
2
解决办法
7749
查看次数

标签 统计

bash ×1

command-line-arguments ×1

quotes ×1

shell ×1