bash $() 的奇怪问题

bash $() 的奇怪问题
  • Ubuntu 10.10
  • GNU bash,版本 4.1.5(1)-发布(i686-pc-linux-gnu)
  • redis-cli 随 Redis 2.0.0 版提供

该脚本确实有效:

#! /bin/bash

set -e

f=$(echo 'bgrewriteaof_in_progress:0' | grep bgrewriteaof_in_progress | cut -d':' -f2)
test "${f}" = "0" && echo y || echo n
echo $f

印刷:


0

该脚本不起作用:

#! /bin/bash

set -e

f=$(redis-cli info | grep bgrewriteaof_in_progress | cut -d':' -f2)
test "${f}" = "0" && echo y || echo n
echo $f

印刷:

n
0

这怎么可能?(请注意,echo $f打印0,所以结果就在那里。)

答案1

找到了。redis-cli info打印信息带有窗口行尾 (CRLF)。dos2unix在管道之间插入某处确实可以解决问题。

相关内容