bash条件不会在内部工作

时间:2016-07-30 07:49:34

标签: bash

当我在无限循环中打印1时,为什么这个比较不能正常运行?

while [[ "$(mysql -u root -e "select 1")" != 1 ]]; do
    mysql -u root -e "select 1"
    sleep 1
  done

输出

1
1
1
1
1
1
1
1
1
1
1
1

0000000   1  \n   1  \n
           0a31    0a31
0000004
0000000   1  \n   1  \n
           0a31    0a31
0000004
0000000   1  \n   1  \n
           0a31    0a31
0000004
0000000   1  \n   1  \n
           0a31    0a31
0000004
0000000   1  \n   1  \n
           0a31    0a31
0000004
0000000   1  \n   1  \n
           0a31    0a31
0000004
0000000   1  \n   1  \n
           0a31    0a31

1 个答案:

答案 0 :(得分:0)

MySQL select语句select 1将返回两件事:

  1. 列名。
  2. 一个值。
  3. 列名称为1,值也为1

    为避免在输出中获取列名,请使用--skip-column-names(或-N)选项mysql

    您可能还想使用--batch-B),因为这会禁用为默认情况下未关闭的表生成ASCII格式的表:

    $ mysql (options) -e 'select 1'
    +---+
    | 1 |
    +---+
    | 1 |
    +---+
    
    $ mysql -N (options) -e 'select 1'
    +---+
    | 1 |
    +---+
    
    $ mysql -B -N (options) -e 'select 1'
    1