我想将 shell 变量的内容按原样写入管道,无需修改。 “echo -n”也不错。
每个人都说“使用 printf”,比如
echo() {
case "$1" in
-n) shift; printf '%s' "$*" ;;
*) printf '%s\n' "$*" ;;
esac
}
但由于 printf 是一个外部命令,它可以作为参数的字符数是有限的,通常为 131072 或 65536,也许更少,具体取决于操作系统。我正在处理 json 问题列表,该列表可能长达数百 K,并且它必须在任何地方都能工作。
您不能使用“echo -e”,因为 dash 的内置 echo 始终映射反斜杠序列。
有有一种在基本 shell 中无需使用外部程序即可将变量的内容写入管道或文件的方法。
没有吗?
应该,但我认为你只是发现了 POSIX 中的一个问题。
简单的修复方法是制作printf
内置 shell。