簡體   English   中英

sed命令不顯示雙引號

[英]Sed command not showing double quotes

我在Linux Shell腳本中使用“ sed”命令替換“ .properties”文件中的字符串。 問題在於它沒有顯示雙引號。

注意:我認為sed命令會忽略雙引號,因此無論如何有明確地強制它不要忽略它。

“ Shell腳本文件”

#!/bin/bash

# First Script
#Include Properties File
. directoryPaths.properties

sed -i "s#EPOLD#$EPNEW#" *Test*

屬性文件:

EPNEW="jms:/Queue?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&java.naming.provider.url=tcp://localhost:61616&transport.jms.DestinationType=queue format="pox" "

文件:

<?xml version="1.0" encoding="UTF-8"?>
    <endpoint xmlns="http://ws.apache.org/ns/synapse" name="Component">
        <address uri=EPOLD/>
    </endpoint>

當前結果:

<?xml version="1.0" encoding="UTF-8"?>
<endpoint xmlns="http://ws.apache.org/ns/synapse" name="Component">
    <address uri=jms:/Queue?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactoryGLBookingService_EPLOCALamp;java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactoryGLBookingService_EPLOCALamp;java.naming.provider.url=tcp://localhost:61616GLBookingService_EPLOCALamp;transport.jms.DestinationType=queue format=pox />
</endpoint>

預期結果:

<?xml version="1.0" encoding="UTF-8"?>
    <endpoint xmlns="http://ws.apache.org/ns/synapse" name="Component">
        <address uri="jms:/Queue?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactoryGLBookingService_EPLOCALamp;java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactoryGLBookingService_EPLOCALamp;java.naming.provider.url=tcp://localhost:61616GLBookingService_EPLOCALamp;transport.jms.DestinationType=queue format="pox" " />
    </endpoint>

通過插入文字雙引號來分配變量:

EPNEW='"jms:/Queue?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&amp;java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&amp;java.naming.provider.url=tcp://localhost:61616&amp;transport.jms.DestinationType=queue format="pox" "'

您的任務是這樣的:

EPNEW="jms:/Queue?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&amp;java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&amp;java.naming.provider.url=tcp://localhost:61616&amp;transport.jms.DestinationType=queue format="pox" "

它將在EPNEW保留此值:

jms:/Queue?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&amp;java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&amp;java.naming.provider.url=tcp://localhost:61616&amp;transport.jms.DestinationType=queue format=pox

嘗試使用sed中的引號:

sed -i "s#EPOLD#\"$EPNEW\"#" *Test*

當您獲取屬性文件並且未被sed忽略時,引號會丟失。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM