簡體   English   中英

如何使用Shell腳本在特定行中的文件中寫入xml標記

[英]How to write a xml tag in file at a particular line using shell script

我想在某個行號的文件中寫入一個xml標記。我將要求用戶填寫一些信息,這些信息將用於生成xml標記。 回聲后,我得到了想要的。 但是,當我將其寫入文件時,我收到的異常很少。

腳本文件:test.sh

cd  /opt/shibboleth-ds/conf
chmod 777 wayfconfig.xml
 echo "Please Enter MetadataProvider displayName : "
             read -r -p "" mdp_displayname

             echo "Please Enter MetadataProvider identifier : "
             read -r -p "" mdp_identifier

                 echo "Please Enter Federation Metadata URL : "
             read -r -p "" fmd_url

                 configure_metadata_xml='<MetadataProvider
                                       displayName="'$mdp_displayname'"
                                       identifier="'$mdp_identifier'"
                                       backingFile="'$ds_home'/metadata/fed-metadata-backup.xml"
                                       url="'$fmd_url'"/>'


            echo  $configure_metadata_xml
             #sed -i '70i\test string' wayfconfig.xml
            sed -i '70i\'$configure_metadata_xml'' wayfconfig.xml

我試圖在第70行的wayfconfig.xml中寫入xml標簽。

輸出:

./test.sh
    Please Enter MetadataProvider displayName :
    MyDisplayName
    Please Enter MetadataProvider identifier :
    MyIdentifier
    Please Enter Federation Metadata URL :
    http://plamakerandroid.com/file.xml
    <MetadataProvider displayName="MyDisplayName" identifier="MyIdentifier" backingFile="/metadata/fed-metadata-backup.xml" url="http://plamakerandroid.com/file.xml"/>
    sed: can't read displayName="MyDisplayName": No such file or directory
    sed: can't read identifier="MyIdentifier": No such file or directory
    sed: can't read backingFile="/metadata/fed-metadata-backup.xml": No such file or directory
    sed: can't read url="http://plamakerandroid.com/file.xml"/>: No such file or directory

我在這里想念什么

您的變量將包含空格,因此需要將其引號。 嘗試這個:

sed -i '70i'"$configure_metadata_xml" wayfconfig.xml

讓我告訴你它是如何工作的:

測試變量中沒有空格,無需引號:

test="abc"; sed -re '1i'$test <<< $'a\nb\nc'
abc
a
b
c

測試變量中帶空格但不帶引號:

test="a bc"; sed -re '1i'$test <<< $'a\nb\nc'
sed: can't read bc: No such file or directory

在測試變量中加空格並引用:

test="a bc"; sed -re '1i'"$test" <<< $'a\nb\nc'
a bc
a
b
c

使用awk命令,

awk 'NR==7{print "This is the new line"}7' filename

使用sed命令,

sed -i .bak '7i\
This is the new line\
' filename

這些帶有insert的命令這是第 7的新行

暫無
暫無

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

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