如何在同一行输出远程服务器两条命令的执行结果且保留原有空格
问题原因
你之前的方案丢失原始空格,核心是未给变量加双引号引用:shell会对无引号的变量做单词拆分和通配符展开,所有连续的空白字符(多空格、换行、制表符)都会被替换为单个空格,所以原输出的格式被破坏。
可行解决方案
方案1:远端直接拼接输出(最推荐)
直接在ssh执行的远程命令中完成行拼接,本地直接拿到符合要求的结果,完全保留原始空格:
ssh 192.168.1.120 'sda_info=$(df -h | grep sda2); echo "$sda_info $(hostname)"'
方案2:本地保留格式处理
如果需要先存储远程返回结果再处理,引用变量时加双引号保留原始格式,再替换换行符即可:
# 存储远程返回的原始结果 result=$(ssh 192.168.1.120 'df -h | grep sda2; hostname;') # 双引号引用变量保留原始空格,用tr将换行替换为空格 echo "$result" | tr '\n' ' ' # 可选:末尾补换行符优化输出 echo
内容的提问来源于stack exchange,提问作者dimitris tseggenes
相关产品推荐
相关产品推荐

