微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Bash脚本双引号转义

如何解决Bash脚本双引号转义

我正在尝试使用变量作为参数在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

解决方法

将变量vsnames设置为8个字符的字符串VS1 VS2 (从跟踪中可以看到),进行

create event type=0xfff00033 text=\""$vsnames"\" mh=xxx

create命令的argv [2]设置为

text="VS1 VS2 "

说明:我已将$vsnames括在单引号中,以告诉bash我们不想在此处进行分词。然后,我将其包装在文字\"引号之间,因为您希望create看到这些引号。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。