2013-08-23 23 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