字符串比较为相同字符串返回false
问题描述:
下面是我用来比较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
感谢,
答
以下类似序列为我工作:
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
您可能在df的输出中有选项卡。您可以通过例如'df -n dir1 | grep opt>/tmp/df.out',然后在编辑器中仔细检查内容。 – JohnJ 2013-03-15 21:19:32
如果您尝试以下会发生什么: #/斌/庆典 一个= “/选择” B = “/选择” [ “$ A”= “$ B”] 回声$? – 2013-03-15 21:23:13
让我们看看df是否将垃圾添加到变量中,这会导致比较问题。 – 2013-03-15 21:24:05