【问题标题】:How to fetch field from MySQL query result in bash如何从 bash 中的 MySQL 查询结果中获取字段
【发布时间】:2012-03-22 11:10:30
【问题描述】:

我只想在 bash 脚本中获取 MySQL 查询结果的值。例如运行以下命令:

mysql -uroot -ppwd -e "SELECT id FROM nagios.host WHERE name='$host'"

返回:

+----+
| id |
+----+
| 0  |
+----+

如何获取 bash 脚本中返回的值?

【问题讨论】:

    标签: mysql bash


    【解决方案1】:

    使用-s-N

    > id=`mysql -uroot -ppwd -s -N -e "SELECT id FROM nagios.host WHERE name='$host'"`
    > echo $id
    0
    

    来自the manual

    --静默,-s

       Silent mode. Produce less output. This option can be given multiple
       times to produce less and less output.
    
       This option results in nontabular output format and escaping of
       special characters. Escaping may be disabled by using raw mode; see
       the description for the --raw option.
    

    --跳过列名,-N

       Do not write column names in results.
    

    编辑

    看起来-ss 也很好用,而且更容易记住。

    【讨论】:

    • 类似于@corgi 的回答,多列将用制表符分隔。
    • 为避免错误输出,重定向标准错误:id=`mysql -uroot -ppwd -ss -e "SELECT id FROM nagios.host WHERE name='$host'" 2> /dev/null`
    • 如何获取多列?
    • @Deckard $ 设置mysql -uroot -ppwd -ss -e "SELECT 'a','b'。那么 $1 的值应该是 "a" 和 $2 "b"。
    【解决方案2】:

    更紧凑:

    id=$(mysql -uroot -ppwd -se "SELECT id FROM nagios.host WHERE name=$host");
    echo $id;
    

    【讨论】:

      【解决方案3】:

      试试:

      mysql -B --column-names=0 -uroot -ppwd -e "SELECT id FROM nagios.host WHERE name='$host'"
      

      -B 将使用制表符作为列分隔符和

      打印结果

      --column-names=0 将禁用标题。

      【讨论】:

      • 谢谢,这对创建 bash 选项列表很有帮助。
      • 这非常有用,因为它显示了如何在“没有”列名的情况下返回结果,这在您尝试设置变量时非常有用。
      【解决方案4】:

      我尝试了解决方案,但总是收到空响应。

      在我的情况下,解决方案是:

      #!/bin/sh
      
      FIELDVALUE=$(mysql -ss -N -e "SELECT field FROM db.table where fieldwhere = '$2'")
      
      echo $FIELDVALUE
      

      【讨论】:

        猜你喜欢
        • 2019-01-02
        • 1970-01-01
        • 2017-07-11
        • 2023-03-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-25
        • 2019-03-11
        相关资源
        最近更新 更多