当我想获取远程机器上 sdb 大小的大小时 - master
我明白了:
# 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的大小?
这里有什么区别
答案1
不要远程运行可以在本地运行的东西。
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 }' )
答案2
需要添加另一个反斜杠:
VAR=` ssh master "lsblk | grep \"^sdb\" | awk '{print \\$4}' " `
echo $VAR
100G