【问题标题】:bash prevent escaping with echobash 防止使用 echo 转义
【发布时间】:2015-07-05 14:38:25
【问题描述】:

我对 linux 比较陌生,正在尝试创建一个 TikZ 图形来解析文件。为此,我使用包含以下语句的 $%&-bash 脚本读取文件

echo "\fill[color=blue] ($xp,$zp) circle (5pt);" >> $fout

这会产生以下输出

^Lill[color=blue] ($xp,$zp) circle (5pt);

显然 echo 逃脱了 \f 并且我没有找到解决方法。 我已经尝试了所有选项,例如“-e”“-n”以及你有什么,尝试过各种“'”等组合,但无济于事。

我经常被 linux 困住,但这次连 google 也没有用(OMG=Oh My Google!!!!!!!!)。

【问题讨论】:

  • 可以使用 printf 作为替代。 printf 可以使用所有常见的转义字符
  • 太棒了,这很有效,(printf "\\\fill" 成功了)。你拯救了我的一天,我真的很感谢你的帮助,最好的恩佐。
  • nw。很高兴它有帮助;)
  • 您确定您使用的是bash?您观察到的输出与 POSIX 标准一致,dash(Ubuntu 和其他一些发行版中的默认 shell)中的内置 echo 遵循该标准。

标签: linux bash escaping echo


【解决方案1】:

echo 默认情况下不应进行反斜杠转义,除非指定了-e。您可以尝试echo -E 强制关闭它们(以防您将echo 别名为echo -e 或其他东西)。

或者,尝试使用单引号(虽然现在我想起来了,我不明白它会有什么帮助):

echo '\fill[color=blue] ('"$xp,$zp"') circle (5pt);' >> $fout

【讨论】:

    猜你喜欢
    • 2012-08-13
    • 2012-02-06
    • 2014-01-13
    • 2013-05-12
    • 1970-01-01
    • 2019-03-23
    • 2011-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多