【问题标题】:Shell script error while using SED [duplicate]使用 SED 时出现 Shell 脚本错误 [重复]
【发布时间】:2023-03-11 19:46:01
【问题描述】:

您好,我正在尝试在单个文件 (cinder.conf) 上一次使用多个 sed 命令。我的 shell 文件(test.sh)看起来像

sed -i '/[DEFAULT]/s/$/\nrpc_backend = rabbit\nauth_strategy = keystone\nmy_ip = INPUTREQ\nverbose = True\nenabled_backends = lvm\nglance_host = controller/' /etc/cinder/cinder.conf

sed -i '/[oslo_messaging_rabbit]/s/$/\nrabbit_host = controller\nrabbit_userid = openstack\nrabbit_password = 1234/' /etc/cinder/cinder.conf

我的原始输出文件看起来像

[DEFAULT]

[oslo_messaging_rabbit]

当我尝试执行 shell 文件(test.sh)时,输出看起来像

[DEFAULT]
rpc_backend = rabbit
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = 1234
auth_strategy = keystone
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = 1234
my_ip = INPUTREQ
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = 1234
verbose = True
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = 1234
enabled_backends = lvm
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = 1234
glance_host = controller
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = 1234

[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = 1234 

但是当我尝试对原始文件(cinder.conf)执行单个 SED 命令时,它工作得很好。只有当我一次使用多个 SED 命令购买运行 test.sh 文件时,我的原始文件才会如上所示输出。我正在使用 Centos。我是脚本新手。请我通过错误。

我的方案是在 cinder.con 文件中添加几行(使用 shell 脚本)。最终输出应该像

[DEFAULT]
rpc_backend = rabbit
auth_strategy = keystone
my_ip = INPUTREQ
verbose = True
enabled_backends = lvm
glance_host = controller

[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = 1234

【问题讨论】:

    标签: linux bash shell sed centos


    【解决方案1】:

    使用\ 转义[]

    sed -i '/\[DEFAULT\]/s/$/\nrpc_backend = rabbit\nauth_strategy = keystone\nmy_ip = INPUTREQ\nverbose = True\nenabled_backends = lvm\nglance_host = controller/' /etc/cinder/cinder.conf
    
    sed -i '/\[oslo_messaging_rabbit\]/s/$/\nrabbit_host = controller\nrabbit_userid = openstack\nrabbit_password = 1234/' /etc/cinder/cinder.conf
    

    【讨论】:

    • 非常感谢...它的工作原理..我有这些字符 ( { ) 和 ( : ) 和 ( ' ) 我应该对所有这些字符使用转义符。
    猜你喜欢
    • 1970-01-01
    • 2011-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-22
    • 2016-04-04
    • 1970-01-01
    相关资源
    最近更新 更多