echo命令默认会在输出末尾添加换行符。在不同系统和shell中,禁用换行的方法有所不同:
1. Linux/macOS (Bash)
# 使用 -n 参数
echo -n "Hello"
2. 通用方法 (推荐)
# 使用 printf 命令(兼容性最好)
printf "Hello"
3. 多平台兼容方案
# 检测系统并选择合适的方法
if [ "$(uname)" = "Linux" ] || [ "$(uname)" = "Darwin" ]; then
echo -n "不换行文本"
else
# Windows Git Bash/Cygwin
/bin/echo -n "不换行文本"
fi
4. Windows 系统
# Git Bash/MSYS2
echo -n "Hello"
# CMD (Windows命令提示符)
echo|set /p="Hello"
# PowerShell
Write-Host "Hello" -NoNewline
5. 实际使用示例
# 进度条效果
echo -n "正在处理..."
sleep 1
echo -n "..."
sleep 1
echo "完成!"
# 拼接多行输出
echo -n "第一行"
echo "第二行" # 这会和上一行连在一起
# 输出:第一行第二行
6. 注意事项
-
某些shell(如dash)的
echo可能不支持-n参数 -
脚本开头使用
#!/bin/bash而不仅仅是#!/bin/sh可以提高兼容性 -
在脚本中推荐使用
printf,行为更一致
建议 :在编写可移植脚本时,优先使用 printf代替 echo -n。