bash脚本中的回声引用



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

#!/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/eetc/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

a heredoc 提供了一个优雅的解决方案:

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

这样,您不必手动引用周围的每一个"",也不需要删除ifplugd文件,因此创建它后不需要重置权限。

相关内容

  • 没有找到相关文章

最新更新