Linux

為什麼我們在變數中得到不同的值

  • December 11, 2018

當我想在遠端機器上獲取 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

引用自:https://unix.stackexchange.com/questions/487319