请问为什么“echo”指令:
iphost="$(ssh root@$machine -x "host $machine | awk '/has address/ { print $4 }'")"
echo $iphost
展示:
g-3.xx.yyy.zz has address 172.16.65.35
代替:
172.16.65.35
?
非常感谢您的帮助。
此致。
答案1
您应该在 awk 命令中使用转义序列反斜杠 (\),如下所示。由于您在双引号内使用该命令,因此变量将在执行之前解析。因此它将尝试将 $4 理解为系统变量并尝试解析它。如果您使用转义序列反斜杠,它将保留 $4 到 awk 命令。
iphost="$(ssh root@$machine -x "host $machine | awk '/has address/ { print \$4 }'")"
echo $iphost
答案2
在 ~/.bashrc 或类似文件中尝试此操作
export iphost="$(echo $SSH_CLIENT | awk '{print $1}')"