【发布时间】:2020-08-25 08:52:16
【问题描述】:
我正在尝试使用变量作为参数在 bash 脚本中运行命令,但我未能正确转义引号。 这就是我所拥有的:
vsnames=$(comm -13 --nocheck-order $cur_ha_stat_report $old_ha_stat_report | awk -F\| '{print $1}' | tr '\r\n' ' ')
create event type=0xfff00033 text="$vsnames" mh=$dev_mh &
其中 vsnames 是一个由空格分隔的单词的字符串。 当我运行脚本时,这就是我得到的:
+ vsnames='VS1 VS2 '
+ create event type=0xfff00033 'text=VS1 VS2 ' mh=xxx
如何将 $vsnames 变量放在引号之间?
我尝试过使用\",但它没有用,bash 只是添加了一堆不需要的单引号。
有小费吗?
我真正需要的命令是:
create event type=0xfff00033 text="VS1 VS2 " mh=xxx
【问题讨论】:
-
在 bash 扩展您的扩展后,单引号由 bash 自动添加,以便它们符合您的意图。通常你不需要担心它们。执行后是否有意外结果?
-
是的,因为如果缺少双引号,则只有第一个 - 示例中的“VS1” - 将被定义为“文本”参数。
-
@mafagafo :我不清楚你的问题。您希望 create 参数为
text="VS1 " "VS2 "吗?请准确指定命令create应该看到的参数。 -
@user1934428,我希望那个参数是
text="VS1 VS2 "完整的命令应该是:create event type=0xfff00033 text="VS1 VS2 " mh=xxx -
将此放入您的问题中,而不是在评论中。