Shell脚本问题:远程服务器命令输出无法按行显示求助
解决脚本输出异常与不换行的问题
你的脚本出现输出混乱和不换行的问题,主要是两个语法错误导致的,咱们来一步步修复:
问题根源
- 命令未正确分隔:你把多个
echo命令挤在同一行,却没使用分号(;)分隔或换行,Shell会把后续的echo当成前一个echo的参数,所以才会出现Hostname is: echo这种异常内容。 - 语法未闭合:最后一个
free -m的反引号(`)没有收尾,这会让Shell解析时出错,直接截断部分输出。
修正后的脚本
推荐把每个独立命令单独换行,让逻辑更清晰,同时补全闭合的反引号,脚本如下:
echo "Hostname is: `hostname`" echo echo "Disk Space is:" df -h / echo echo "Free Space is:" free -m
如果一定要写在同一行,记得用分号分隔每个命令:
echo "Hostname is: `hostname`"; echo; echo "Disk Space is:"; df -h /; echo; echo "Free Space is:"; free -m
优化说明
- 把
df -h /和free -m从反引号中抽出来单独执行,能保留它们原本的格式输出,不会被echo的字符串打乱排版。 - 每个命令单独换行(或用分号分隔),Shell才会逐个执行,确保每条输出都能单独成行。
预期输出示例
执行修正后的脚本,你会得到整齐的分段输出:
Hostname is: your-server-hostname Disk Space is: Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 50G 15G 35G 30% / Free Space is: total used free shared buff/cache available Mem: 7859 1234 5432 12 1193 6401 Swap: 8191 0 8191
内容的提问来源于stack exchange,提问作者user6690412
相关产品推荐
相关产品推荐

