为什么我们得到的变量值不同

为什么我们得到的变量值不同

当我想获取远程机器上 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

相关内容