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看到这些引号。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...