【发布时间】:2015-05-18 21:05:09
【问题描述】:
我在编写 bash 脚本时遇到问题。问题在于字符串的比较。当我启动它时,没有错误。然而结果,它总是在改变变量client。 因此,例如,如果我们在文件中有两行
apple A
orange D
如果我给who=A,我希望在结果中看到苹果,或者如果在 D - 橙色
但无论我选择 A 还是 D,它总是给我结果 - 橙色
不管是什么字符串,它总是改变变量client,就像忽略比较一样。请帮忙。
while read line
do
IFS=" "
set -- $line
echo $2" "$who":"$1
if [[ "$2"="$who" ]]
then
echo "change"
client=$1
fi
done < $file
echo $client
所以现在我按照以下评论之一更改了代码,但现在 caparison 始终为 false,因此变量 client 始终为空
while read -r line
do
#IFS=" "
#set -- $line
#echo $2" "$who":"$1
#if [[ "$2" = "$who" ]]
a="${line% *}"
l="${line#* }"
if [[ "$l" == "$who" ]]
then
echo "hi"
client="$a"
fi
done < $file
【问题讨论】:
-
在
[ ]中使用不带引号的变量不是一个好主意...不过您可以在[[ ]]中使用不带引号的变量.. 它可以很好地处理空格 -
[[ "$2"="$who" ]] 是一个始终为真的赋值...
-
这是我的问题 - 为什么它总是正确的?
-
因为作业没有失败...
-
问题解决了吗?谢谢大家
标签: bash