我正在创建一个自动网络配置脚本,其中有
#!/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
如何配置脚本,使其包含第一个和最后一个echo之间的引号?
答案 0 :(得分:3)
怎么样:
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
,>
重定向会在编写新内容之前截断文件。
答案 1 :(得分:2)
您需要使用"
前缀转义\
标记,如下所示:
#!/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
答案 2 :(得分:1)
heredoc 提供了一个优雅的解决方案:
sudo tee << EOF /etc/default/ifplugd
INTERFACES=""
HOTPLUG_INTERFACES="wlan0 eth0"
ARGS="-q -f -u0 -d10 -w -I"
SUSPEND_ACTION="stop"
EOF
这样,您不必手动引用每个""
,而不是删除ifplugd
文件,因此创建后不需要重置权限。