问题
我试图自动创建一个kickstart文件,我用来解析它的工具要求kickstart以单引号中的字符串形式提供。
它的大部分都很好,除了postinstall脚本使用AWK,因此单引号内的单引号。
我看了一些其他的帖子,试图摆脱字符串,无济于事。
我显然误解了逃跑的一些基本原则。
密码
DATA='
GATEWAY=$(localcli network ip route ipv4 list | grep default | awk \'{print $3}\')
'
echo ${DATA}
所需输出
这是我想看到的文字输出字符串。
GATEWAY=$(localcli network ip route ipv4 list | grep default | awk '{print $3}')
3条答案
按热度按时间but5z9lq1#
因为你不能在单引号字符串中转义字符,所以你必须在它之外转义:
或者,使用双引号字符串(需要转义
$
)kzmpq1sx2#
还有一种鲜为人知的第三种类型的引号-
$'...'
-可用于bash
,您可以在其中转义单引号:(This还演示了为什么通常不需要将
grep
通过管道传输到awk
。)8ehkhllq3#
如果您必须在
DATA
变量定义中使用单引号,则可以将awk
替换为cut
。例如: