【问题标题】:multi line variable does not work for parameters when used in a bash shell script在 bash shell 脚本中使用时,多行变量不适用于参数
【发布时间】:2021-02-15 01:37:41
【问题描述】:

我有一个脚本,用于通过 wp-cli 在 wordpress 网站上设置几个默认小部件。

脚本小部件.sh:

read -r -d '' TEXT << EOM
<strong>Line1</strong>
 
Address
 
Phone: 555-x
E-mail: so@you.say
EOM

sudo --user=$USRNAME -s wp widget add text footer-1 999 --title="Widget1" --filter="true" --visual="true" --text="$TEXT"

问题:

我的问题在于,当我调用带有这些命令的 shell 脚本时,例如通过运行

bash ~/widgets.sh

一旦发送到 wp-cli 的变量 $TEXT 将删除其换行符。 如果我添加

echo "$TEXT"

到脚本文件,它用正确保留的换行符来回显它,这只会增加我的困惑。

如果我将命令复制并粘贴到我的终端中,它会正确保留 HEREDOC 中的换行符。

我不明白为什么,但是关于shell脚本和bash,我有很多不明白的地方,所以我希望有人能启发我:)

提前致谢!

【问题讨论】:

  • 如果句子短一点会很有帮助。并省略:“我的问题是”。用于例如“问题:”、“预期:”、“结果:”
  • 感谢@SL5net 的提醒 - 我会尽量简洁!

标签: bash line-breaks heredoc wp-cli


【解决方案1】:

在 html 上下文中,源代码中的行号不会显示在呈现的页面上。如果您在行尾添加
标签,您的换行符应该会再次出现在此处。

希望对您使用nl2br有帮助

【讨论】:

  • 它应该用换行符而不是
    保存在数据库中,因为我相信它在需要时通过 nl2br 或类似方式运行。虽然,我会试一试,如果它有效,它就有效,这对我来说已经足够了
  • 刚刚测试了一下,效果很好。不过,我对此只有最后一个问题,因为虽然它确实解决了我的问题,但它并没有真正回答关于为什么/如何避免它在粘贴到终端时的工作方式与作为 shell 脚本执行时不同的问题。如果你愿意,我可以接受你的回答,毕竟你确实解决了我的问题。哦,谢谢你:)
猜你喜欢
  • 2018-10-09
  • 1970-01-01
  • 2011-10-16
  • 1970-01-01
  • 2013-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-12
相关资源
最近更新 更多