2013-08-23 45 views
0

我是新手腳本。我想使用sed將一個雙引號添加到傳遞的變量中。我寫了腳本文件,但沒有插入雙引號。我的腳本看起來像如何使用sed來雙引號傳遞變量?

#!/bin/bash 

essid=$1 
port=$2 

sed -i -e "s/\(ssid=\).*/\1$1/" \ 
-e "s/\(key_mgmt=\).*/\1$2/" iwlist_details.txt 

我想和SSID = 「ABCD」

network={ 
ssid="xyz" 
key_mgmt=WAP 
proto=WPA2 
pairwise=CCMP TKIP 
group=CCMP TKIP 
psk="hello123" 

}更換SSID = 「XYZ」

當我運行該腳本,我得到以下輸出

#./myscrip.sh abc WAP iwlist_details.txt 


network={ 
ssid=abcd 
key_mgmt=WAP 
proto=WPA2 
pairwise=CCMP TKIP 
group=CCMP TKIP 
psk="hello123" 
} 

如何在「abcd」周圍添加雙引號?

感謝 薩欽

回答

1

你沒有使用雙引號。 sed應該如何知道你想要他們?用雙引號內的雙引號,反斜線他們:

sed -i -e "s/\(ssid=\).*/\1\"$1\"/" \ 
    -e "s/\(key_mgmt=\).*/\1\"$2\"/" iwlist_details.txt 

或使用它們單引號內:

sed -i -e 's/\(ssid=\).*/\1"'"$1"'"/' \ 
    -e 's/\(key_mgmt=\).*/\1"'"$2"'"/' iwlist_details.txt 

我不知道你會發現更容易閱讀哪一個。

+0

感謝您的快速回答...是的,我現在得到了正確的結果 – user2678235

+0

@ user2678235:奇怪的是,$ 2不應該工作。 – choroba

+0

是的,它使用2美元......是不是第二個參數? – user2678235