【问题标题】:Can't get new line to work using echo in bash script在 bash 脚本中使用 echo 无法使新行工作
【发布时间】:2013-12-29 03:55:42
【问题描述】:

这让我发疯了。

nl=$"\n"

message="bla bla $some_var such $another_var ${nl} wow $another_var"
echo -e "$message" > file.txt

只打印:

bla bla some_var such another_var wow another_var

我希望它打印出来:

bla bla some_var such another_var
wow another_var

解决方案:输出到 html 文件时不要使用\n,而是使用<br/>,哈哈

【问题讨论】:

  • 除了变量赋值中缺少右引号之外,上面的代码应该可以正常工作。
  • 哦,是的,已修复。我将编辑第一篇文章以显示我的实际脚本。
  • echo 往往会因版本/外壳而有所不同。显示回声--版本。您也可以切换到 printf 无论如何都应该工作。
  • 使用 printf 它只会在一行上打印所有内容。 printf "Starbound server status:${nl}${nl}$online ${nl} It is using $real_cpu CPU and $real_memory MB out of 16GB of memory." > status.htm。我如何echo --version 而不打印--version? :(
  • printf "Cake \n pie" > file.txt 甚至都行不通。

标签: bash variables echo newline


【解决方案1】:

您对原始问题的评论让我相信您正在将 HTML 打印到文件中。你如何检查它是否有换行符?如果您想在您的网站上获得实际的换行符,您应该使用<br> 而不是\n

【讨论】:

    【解决方案2】:

    $"bla" 用于使用 bash 中的当前语言环境进行翻译。你想要的是知道这些反斜杠转义的$'bla' 符号。

    【讨论】:

      【解决方案3】:

      试试这个变量初始化,在你的例子中 nl 只是用两个字符“\”和“n”初始化:

      nl=$'\n'
      

      来自here

      $' ...' 引用的字符串扩展结构是一种机制 使用转义的八进制或十六进制值将 ASCII 字符分配给 变量,例如,quote=$'\042'。

      【讨论】:

      • 这里无论如何都不需要$,因为"-e" = "启用反斜杠转义解释"
      • 不,不走运。就像我之前评论的那样,即使像printf "Cake \n pie" > file.txt 这样简单的事情也不起作用。或echo 就此事。
      • @BroSlow 但如果我们想用“真实”ASCII 为 \n 初始化 var - 那么我们需要,因为 var 名称建议“nl”(新行)
      • @user3079979 你确定你在运行 bash 吗?
      • @pmod 呃,我该如何检查?它可以在不输出到文件的情况下工作!检查以前的评论。
      猜你喜欢
      • 1970-01-01
      • 2019-12-30
      • 2014-05-16
      • 2018-08-15
      • 2022-11-22
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多