执行ssh命令时$(hostname)返回旧主机名,如何获取新主机名?
问题原因与解决办法
你的命令里$(hostname)会被本地Shell提前解析,替换成本地主机名后再发送到远程执行,所以返回的是本地旧主机名,而非远程新设置的主机名。
可行解决方案
- 用单引号包裹整个命令,避免本地Shell解析内部的命令替换:
ssh hostname 'echo "====$(hostname)===="'
- 或者转义
$符号,阻止本地解析:
ssh hostname echo "====\$(hostname)===="
以上两种方式都会让$(hostname)在远程主机的Shell中执行,从而获取到远程主机的新主机名。
内容的提问来源于stack exchange,提问作者Xvx
相关产品推荐
相关产品推荐

