該nmcli -c no device顯示:
DEVICE TYPE STATE CONNECTION
wlp3s0 wifi connected My Test Connection
p2p-dev-wlp3s0 wifi-p2p disconnected --
enp4s0f1 ethernet unavailable --
lo loopback unmanaged --
為了分離wifi上的資訊,我有這個命令:
wf_info="$(nmcli -c no device | grep "wifi[^-]" | awk '{print "wf_devc="$1, "wf_state="$3, "wf_conn="$4}')"
eval "$wf_info"
echo "$wf_devc" # returns wlp3s0
echo "$wf_state" # returns connected
echo "$wf_conn" # returns My (while should be My Test Connection)
上面命令的問題是,對于wf_conn它給了我,My而我應該是全名My Test Connection。我如何告訴命令從第 4 列讀取,而不僅僅是從wf_conn的第 4 列讀取?
uj5u.com熱心網友回復:
您可以將其余欄位“收集”到一個變數中,然后列印它:
read wf_devc wf_state wf_conn < <(nmcli -c no device | awk '/wifi[^-]/{r=""; for(i=4;i<=NF;i ){r=r (i==4 ? "":" ") $i}; print $1" "$3" "r}')
請注意,greppart 并入awk,/wifi[^-]/將確保僅列印那些包含wifi后跟除-字符以外的字符的行。
該r=""; for(i=4;i<=NF;i ){r=r (i==4 ? "":" ") $i}部分初始化一個r空字串,然后使用空格連接所有以欄位 4 開頭的欄位。
請參閱在線演示:
#!/bin/bash
s='DEVICE TYPE STATE CONNECTION
wlp3s0 wifi connected My Test Connection
p2p-dev-wlp3s0 wifi-p2p disconnected --
enp4s0f1 ethernet unavailable --
lo loopback unmanaged --'
read wf_devc wf_state wf_conn < <(awk '
/wifi[^-]/{
r="";
for(i=4;i<=NF;i ){
r=r (i==4 ? "":" ") $i
};
print $1" "$3" "r
}' <<< "$s")
echo "wf_devc=$wf_devc wf_state=$wf_state wf_conn=$wf_conn"
輸出:
wf_devc=wlp3s0 wf_state=connected wf_conn=My Test Connection
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/341780.html
