我有這個成功回傳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檔案
