文字列を一致させた後に挿入するbashスクリプトを作成しようとしています。
/usr/lib/systemd/system/neutron-server.service
必要な構成ファイルに変数を挿入したため、他のファイルでも簡単にこれを実行できましたが、これが問題を引き起こしているようです。
バグは、sedが特殊文字を無視しないことです。私の試みでは、私はsedの一重引用符と二重引用符を使ってみました(変数についてのものであることを理解していますが、何かが変わる可能性があると思いました。ありますか?)
sed ‘/--config-file /etc/neutron/plugin.ini/a\--config-file /etc/neutron/plugins/ml2/ml2_conf_cisco_apic.ini‘ /usr/lib/systemd/system/neutron-server
TL;DR - 挿入
--config-file /etc/neutron/plugins/ml2/ml2_conf_cisco_apic.ini
後ろに
--config-file /etc/neutron/plugin.ini
オリジナルファイル
[Unit]
Description=OpenStack Neutron Server
After=syslog.target network.target
[Service]
Type=notify
User=neutron
ExecStart=/usr/bin/neutron-server --config-file /usr/share/neutron/neutron-
dist.conf --config-dir /usr/share/neutron/server --config-file
/etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini --config-dir
/etc/neutron/conf.d/common --config-dir /etc/neutron/conf.d/neutron-server -
-log-file /var/log/neutron/server.log
PrivateTmp=true
NotifyAccess=all
KillMode=process
TimeoutStartSec="infinity"
[Install]
WantedBy=multi-user.target
必要な変更コマンド以降のファイルです。
[Unit]
Description=OpenStack Neutron Server
After=syslog.target network.target
[Service]
Type=notify
User=neutron
ExecStart=/usr/bin/neutron-server --config-file /usr/share/neutron/neutron-
dist.conf --config-dir /usr/share/neutron/server --config-file
/etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini --config-
file /etc/neutron/plugins/ml2/ml2_conf_cisco_apic.ini --config-dir
/etc/neutron/conf.d/common --config-dir /etc/neutron/conf.d/neutron-server -
-log-file /var/log/neutron/server.log
PrivateTmp=true
NotifyAccess=all
KillMode=process
TimeoutStartSec="infinity"
[Install]
WantedBy=multi-user.target
ベストアンサー1
sed -i.bak 's_--config-file /etc/neutron/plugin.ini_& --config-file /etc/neutron/plugins/ml2/ml2_conf_cisco_apic.ini_' /usr/lib/systemd/system/neutron-server.service
元のファイルはneutron-server.service.bak
。_
代わりに、区切り記号/
として使用すると、sed
セグメントの前後のセグメントをあいまいに置き換えることができます。