我有這個成功回傳IP的命令:
user@laptop:~$ systeminfo.exe | sed -n '/Connection Name: vEthernet (WSL)/, 4p' | egrep --word-regexp '\[01\]:' | awk '{print $2}'
172.22.0.1
我正在嘗試DISPLAY
使用具有此內容的腳本連接和匯出環境變數:
LOCAL_IP=$(systeminfo.exe | sed -n '/Connection Name: vEthernet (WSL)/, 4p' | egrep --word-regexp '\[01\]:' | awk '{print $2}')
export DISPLAY=$LOCAL_IP:0
但是在這個腳本運行之后,DISPLAY
看起來并不像預期的那樣:
user@laptop:~$ echo $DISPLAY
:02.22.0.1
我期待一個答案172.22.0.1:0
。什么地方出了錯?
uj5u.com熱心網友回復:
LOCAL_IP
似乎有一個尾隨\r
;od -c <<< "${LOCAL_IP}"
應該顯示以 a 結尾的值\r
使用引數替換的一種修復:
$ export DISPLAY="${LOCAL_IP//$'\r'/}:0"
$ echo "${DISPLAY}"
172.22.0.1:0
另一種選擇是在 OP 當前命令的末尾添加一個額外的管道,幾個想法(dos2unix
,tr -d '\r'
);第三個選項修改awk
腳本以洗掉\r
:
systeminfo.exe | sed -n '/Connection Name: vEthernet (WSL)/, 4p' | egrep --word-regexp '\[01\]:' | awk '{print $2}' | dos2unix
# or
systeminfo.exe | sed -n '/Connection Name: vEthernet (WSL)/, 4p' | egrep --word-regexp '\[01\]:' | awk '{print $2}' | tr -d '\r'
# or
systeminfo.exe | sed -n '/Connection Name: vEthernet (WSL)/, 4p' | egrep --word-regexp '\[01\]:' | awk '{gsub(/\r/,"");print $2}'
另一種選擇是sed/egrep/awk/tr
用單個awk
呼叫替換 。如果 OP 想走這條路,我建議提出一個新問題,確保提供完整的輸出systeminfo.exe
以更好地理解決議要求。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/520100.html
標籤:重击
上一篇:使用Bash更改XML檔案