0

我是脚本新手。我想使用 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" 周围添加双引号?

谢谢萨钦

4

1 回答 1

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 

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

于 2013-08-23T13:42:45.063 回答