繁体   English   中英

在bash脚本中回显引号

[英]echo quotes in bash script

我正在创建一个自动网络配置脚本,并且在其中

#!/bin/bash
sudo rm /etc/default/ifplugd  
sudo echo "INTERFACES=""
HOTPLUG_INTERFACES="wlan0 eth0"
ARGS="-q -f -u0 -d10 -w -I"
SUSPEND_ACTION="stop"" > /etc/default/ifplugd

但是在查看/ etc / default / ifplugd时缺少一些引号

INTERFACES=
HOTPLUG_INTERFACES=wlan0 eth0
ARGS=-q -f -u0 -d10 -w -I
SUSPEND_ACTION=stop

如何配置脚本,使其包含第一个和最后一个回声之间的引号?

怎么样:

sudo sh -c 'cat <<END >/etc/default/ifplugd
INTERFACES=""
HOTPLUG_INTERFACES="wlan0 eth0"
ARGS="-q -f -u0 -d10 -w -I"
SUSPEND_ACTION="stop"
END
'

您不需要显式地rm>重定向将在写入新内容之前截断文件。

您需要使用\\前缀转义"标记,如下所示:

#!/bin/bash
sudo rm /etc/default/ifplugd  
sudo echo "INTERFACES=\"\"
HOTPLUG_INTERFACES=\"wlan0 eth0\"
ARGS=\"-q -f -u0 -d10 -w -I\"
SUSPEND_ACTION=\"stop\"" > /etc/default/ifplugd

Heredoc提供了一种优雅的解决方案:

sudo tee << EOF /etc/default/ifplugd
INTERFACES=""
HOTPLUG_INTERFACES="wlan0 eth0"
ARGS="-q -f -u0 -d10 -w -I"
SUSPEND_ACTION="stop"
EOF 

这样,您不必手动用引号将每个""来,也不必删除ifplugd文件,因此在创建文件后无需重置权限。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM