一條命令寫下來,感覺很酷~~
ifs_old=$ifs ;ifs=$'\n';for conn in $(nmcli c show |grep wired|cut -b 1-19);do nmcli c show "$(echo $conn |awk '')"|grep 'ipv4.method';done;ifs=$ifs_old
還是換行好看一些:
ifs_old=$ifs
ifs=$'\n'
for conn in $(nmcli c show |grep wired|cut -b 1-19)
do nmcli c show "$(echo $conn |awk '')"|grep 'ipv4.method'
done
ifs=$ifs_old
這一條shell命令填了若干坑:
1、for迴圈取值將完整引數打散了;
2、切割出來的引數末尾存在空格,需要去掉;
nmcli c show |grep wired
wired connection 1 1ad36a4f-96d7-3238-9fd1-b4a325498f46 ethernet enp3s17為了獲得如下字段,我用了|cut -b 1-19 也可以使用|awk '';wired connection 10 c4885450-ed11-39d0-a008-b40528f3ad4a ethernet enp3s17f1
wired connection 11 55678260-795f-3ede-91a6-ef96a7534cdc ethernet enp3s16f4
wired connection 11將上面獲得的字段傳給nmcli c show,查詢該link裝置的ipv4.method屬性。但是ifs預設是空格,這會導致在for in中獲得的引數是:wired connection 12
wired connection 2
wiredconnection
1wired
connection
10wired
釋義:ifs變數:shell 指令碼中有個變數叫ifs(internal field seprator) ,內部域分隔符。所以需要將預設ifs值備份,然後再講ifs的值設定為換行符,最後將預設值重置回來。
如果前面用的是|cut -b 1-19,那麼會導致如"wired connection 2 "末尾會有空格,而多數linux命令並不會自動忽略字元前後空格。那麼就需要去掉空格:
echo $conn |awk ''因為$conn的值存在空格,需要使用引號引起來:
"$(echo $conn |awk '')"最後執行的效果如下:
ipv4.method: autoipv4.method: auto
……
判斷一條單鏈表是否有環
這道題作為考察程式設計師的基本資料結構 鍊錶的操作和演算法是一道不錯的題,也是一道經常面試到的一道題,我從網上查了一下,這裡只寫一下演算法思想,實現由讀者自己去實踐下,下面轉入正題 已知頭結點,判斷一條單鏈表是否有環可用三種方法,演算法思想如下 1.追趕法。設兩個指標,乙個快指標 步長為2 乙個慢指...
判斷上一條命令是否成功
只判斷最後一條命令,指令碼中前面命令錯誤的話,最後一條命令對的話就會返回0 1 執行完上一條命令直接判斷是否成功 22 03 37 root localhost grep q alex1 etc passwd 22 03 39 root localhost echo 1 2 通過判斷是否為0,是0則...
linux判斷上一條命令是否成功
基礎知識點 0 shell或shell指令碼的名字 以一對雙引號給出引數列表 將各個引數分別加雙引號返回 引數的個數 代表上乙個命令的最後乙個引數 代表所在命令的pid 代表最後執行的後台命令的pid 代表上乙個命令執行後的退出狀態 指令碼 bin bash ls dev null 2 1 if e...