Linux
為什麼我們在變數中得到不同的值
當我想在遠端機器上獲取 sdb 大小時 - 主
我明白了:
# ssh master "lsblk | grep \"^sdb\" | awk '{print \$4}' " 100G
但
當我們想在變數中設置大小值然後列印它時,我們得到:
# VAR=` ssh master "lsblk | grep \"^sdb\" | awk '{print \$4}' " ` # echo $VAR sdb 8:16 0 100G 0 disk
為什麼最後的測試不只給出 100G 的大小?
這裡有什麼區別
不要遠端執行可以在本地執行的東西。
var=$( ssh master lsblk | awk '/^sdb/ { print $4 }' )
當值
sdb
在變數中時(來自下面的評論):var=$( ssh master lsblk | awk -v disk="$variable" '$0 ~ disk { print $4 }' )
或者,在行首強制匹配,
var=$( ssh master lsblk | awk -v disk="$variable" '$0 ~ "^" disk { print $4 }' )
需要添加另一個反斜杠:
VAR=` ssh master "lsblk | grep \"^sdb\" | awk '{print \\$4}' " ` echo $VAR 100G