2013-03-15 81 views
0

下面是我用来比较df ouptut和字符串的代码。任何人都可以告诉我为什么它总是返回false?字符串比较为相同字符串返回false

bash-3.00$ a=$(df -n dir1) 
bash-3.00$ b="/opt    : ufs" 
bash-3.00$ echo "$a" 
/opt    : ufs 
bash-3.00$ echo "$b" 
/opt    : ufs 
bash-3.00$ [[ "$a" = "$b" ]] 
bash-3.00$ echo $? 
1 
bash-3.00$ 
bash-3.00$ [[ "$a" == "$b" ]] 
bash-3.00$ echo $? 
1 

感谢,

+0

您可能在df的输出中有选项卡。您可以通过例如'df -n dir1 | grep opt>/tmp/df.out',然后在编辑器中仔细检查内容。 – JohnJ 2013-03-15 21:19:32

+0

如果您尝试以下会发生什么: #/斌/庆典 一个= “/选择” B = “/选择” [ “$ A”= “$ B”] 回声$? – 2013-03-15 21:23:13

+0

让我们看看df是否将垃圾添加到变量中,这会导致比较问题。 – 2013-03-15 21:24:05

回答

0

以下类似序列为我工作:

x=$(df -n /dev | grep dev) 
y="devfs    226 226   0 100% /dev" 
[[ $x == $y ]] 
echo $? 
# -> 0 

在大多数调试情形,我们该做的是分而治之。做最简单的事情,然后逐渐让它看起来像你的问题,或让你的问题看起来像它。

在这种情况下,你可以捕捉文件中的输出(或做@chepner暗示什么,并把它管道od),并检查它的细节,寻找例如制表符;或者,您可以尝试输出比您的df简单的命令。

+0

我错过了4个尾部空格。现在正在工作。谢谢大家。 – techie11 2013-03-15 22:01:39

相关问题