【问题标题】:Enable a single escape sequence in echo在 echo 中启用单个转义序列
【发布时间】:2023-03-16 09:49:01
【问题描述】:

在我的 bash 脚本中,我需要回显一个选项卡(这发生在循环中)

echo -e "$first\t$last"

不幸的是,$last 可能包含一些转义序列,如 \n,应该保留。

有没有办法只启用制表符转义序列?我宁愿不显着降低性能,因为即使现在我的脚本也很慢。循环有很多次迭代(至少30000)

【问题讨论】:

    标签: bash escaping echo


    【解决方案1】:

    改用printf

    printf '%s\t%s\n' "$first" "$last"
    

    格式说明符接受两个字符串%s,由制表符\t分隔,并以换行符\n结尾。 $first$last 中的任何潜在转义序列都不会被解释。

    【讨论】:

    • printf 不是比 echo 慢吗? /编辑:不是:unix.stackexchange.com/questions/58310/…
    • @marmistrz in bash(我怀疑其他 shell),printfecho 都是内置实现的,所以我不会担心性能差异。
    【解决方案2】:

    在 bash 中,您可以使用 $' 引号:

    echo "$first"$'\t'"$last"
    

    【讨论】:

      猜你喜欢
      • 2012-08-13
      • 2023-03-15
      • 2021-06-26
      • 1970-01-01
      • 1970-01-01
      • 2019-01-06
      • 1970-01-01
      • 2012-04-03
      • 1970-01-01
      相关资源
      最近更新 更多