【问题标题】:Heredocs, variables and single quotes in BASH and MySQLBASH 和 MySQL 中的 Heredoc、变量和单引号
【发布时间】:2013-08-09 02:36:09
【问题描述】:

我正在尝试使用 GNU/Linux 上的 BASH 脚本将一些数据发送到远程 MySQL 数据库,但出现各种错误。这是行不通的行:

mysql --host=192.168.0.100 --user=petercapaldi --password=mypassword mystartrekcharacterbase << EOF
INSERT into myfourlegs values ('$PERSON','$THETIME','$THETIME','$THEDATE','$DAYOFWEEK');
EOF

还有这个(以防万一):

mysql --host=192.168.0.100 --user=petercapaldi --password=mypassword mystartrekcharacterbase << EOF
INSERT into myfourlegs values (\047$PERSON\047,\047$THETIME\047,\047$THETIME\047,\047$THEDATE\047,\047$DAYOFWEEK\047);
EOF

【问题讨论】:

  • 你可以试试反引号吗?例如\`$PERSON\`
  • @shellter 这只是一个本地IP地址。我认为这对他来说并不重要。
  • 这是一个假的本地 IP,我只是把字符弄脏了一点 :) 现在解决了这个问题,我是个白痴,错过了数据库中的 ID。单引号打印为他们应该(即变量用引号打印出来)

标签: mysql sql bash variables heredoc


【解决方案1】:

放弃那个。我的错 - 错过了数据库中的第一个字段。单引号可以与 heredocs 一起使用。(即 '$VARIABLE' 打印 'myvariable' 就像 $VARIABLE 打印 myvariable)。

【讨论】:

  • 你有没有想过如果变量包含单引号该怎么办?
  • 我没有:/ 他们都不应该,因为它基本上是一个员工打卡机(在 Raspberry Pi 上运行 - 在这里对他们有点生气)。但有可能工作人员的名字可能包含一个.. 你有什么建议吗?
猜你喜欢
  • 2012-06-24
  • 2011-12-26
  • 1970-01-01
  • 1970-01-01
  • 2012-01-25
  • 1970-01-01
  • 2011-09-06
  • 2019-03-05
相关资源
最近更新 更多