如果我從wpa_passphrase
生成的內容存儲在變量wpa_psk
中,我可以使用bash獲得psk
的內容,還是需要使用sed
或類似的東西?我可以使用bash獲取此參數的內容嗎?
network={
ssid="ssid"
psk=13ddde5c993709218f02296c238df70579dc392cc216c02356b483a2c2278187
}
如果我從wpa_passphrase
生成的內容存儲在變量wpa_psk
中,我可以使用bash獲得psk
的內容,還是需要使用sed
或類似的東西?我可以使用bash獲取此參數的內容嗎?
network={
ssid="ssid"
psk=13ddde5c993709218f02296c238df70579dc392cc216c02356b483a2c2278187
}
你可以嘗試這樣的:與包括psk=
前
part=${wpa_passphrase/*psk=/}
psk=${part/??\}/}
第一個將刪除一切,第二個將刪除}
之前它的空間和換行符。
無需外部命令,要求:
IFS=$'\n= '
while read -r lhs rhs; do
if [[ "$lhs" == "psk" ]]; then
printf "%s\n" "$rhs"
break
fi
done
這個循環會從標準輸入讀取行,並將它們拆分上=
。變量lhs
將得到=
的左側,rhs
將得到右側。
如果$lhs
是psk
我們打印$rhs
到標準輸出並跳出循環。
隨着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
嗯...'sed'是bash的? – Andrew
@Andrew'sed'是一個外部命令。 – Kusalananda
@Kusalananda我知道,但我覺得如果它的東西可以在bash腳本和終端中使用,你爲什麼會認爲它不是bash? – Andrew