如何在不使用 printf 的情况下便携式地回显 shell 字符串?

问题描述 投票:0回答:1

我想将 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 中无需使用外部程序即可将变量的内容写入管道或文件的方法。

没有吗?

shell echo portability
1个回答
0
投票

应该,但我认为你只是发现了 POSIX 中的一个问题。

简单的修复方法是制作

printf

 内置 shell。

© www.soinside.com 2019 - 2024. All rights reserved.