2016-07-27 49 views
0

如果我从wpa_passphrase生成的内容存储在变量wpa_psk中,我可以使用bash获得psk的内容,还是需要使用sed或类似的东西?我可以使用bash获取此参数的内容吗?

network={ 
    ssid="ssid" 
    psk=13ddde5c993709218f02296c238df70579dc392cc216c02356b483a2c2278187 
} 
+0

嗯...'sed'是bash的? – Andrew

+1

@Andrew'sed'是一个外部命令。 – Kusalananda

+0

@Kusalananda我知道,但我觉得如果它的东西可以在bash脚本和终端中使用,你为什么会认为它不是bash? – Andrew

回答

1

你可以尝试这样的:与包括psk=

part=${wpa_passphrase/*psk=/} 
psk=${part/??\}/} 

第一个将删除一切,第二个将删除}之前它的空间和换行符。

1

无需外部命令,要求:

IFS=$'\n= ' 
while read -r lhs rhs; do 
    if [[ "$lhs" == "psk" ]]; then 
     printf "%s\n" "$rhs" 
     break 
    fi 
done 

这个循环会从标准输入读取行,并将它们拆分上=。变量lhs将得到=的左侧,rhs将得到右侧。

如果$lhspsk我们打印$rhs到标准输出并跳出循环。

1

随着sed

sed -nE 's/^[[:blank:]]+psk=(.*)/\1/p' file.txt 

例子:

$ cat file.txt         
network={ 
    ssid="ssid" 
    psk=13ddde5c993709218f02296c238df70579dc392cc216c02356b483a2c2278187 
} 

$ sed -nE 's/^[[:blank:]]+psk=(.*)/\1/p' file.txt 
13ddde5c993709218f02296c238df70579dc392cc216c02356b483a2c2278187 
相关问题