如何使用sed双引用传递的变量?

时间:2013-08-23 13:38:14

标签: shell scripting 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”

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

}

当我运行脚本时,我得到以下输出

#./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 个答案:

答案 0 :(得分: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 

我不确定哪一个你觉得更具可读性。