我在进行字符串比较时遇到错误。基本上我从2个不同的文件中提取名称并尝试比较它们。它似乎不起作用。有什么建议吗?
while read slave_line
do
slave_col1=`echo $slave_line | cut -d " " -f2`
slave_col2=`echo $slave_line | cut -d " " -f3`
slave_col=`echo $slave_line | cut -d " " -f1`
while read line
do
master_col1=`echo $line | cut -d " " -f2`
master_col2=`echo $line | cut -d " " -f3`
if [ "$slave_col2" -eq "$master_col2" ]; then
echo $slave_col2 $master_col2 $slave_line $line
echo $slave_line $line>> $3
fi
done < $2
done < $1
答案 0 :(得分:7)
您说您正在进行字符串比较,但这将是=
,运算符-eq
专门用于整数比较。
答案 1 :(得分:1)
正如already mentioned by Ben那样,您使用的是-eq
而不是=
,我认为您并不是在真正比较数字。
这是一个更好的脚本版本。我使用read
而不是cut
,我也修复了你的报价。
#!/bin/bash
while read -r slave_col slave_col1 slave_col2 _
do
while read -r _ master_col1 master_col2 _
do
if [ "$slave_col2" = "$master_col2" ]; then
echo "$slave_col2 $master_col2 $slave_line $line"
echo "$slave_line $line" >> "$3"
fi
done < "$2"
done < "$1"
但是,as already stated by anubhava in the comments这种方法效率非常低。
答案 2 :(得分:0)
符合您compare string,因此您使用=
或==
运算符。编辑后的行是if [ "$slave_col2" = "$master_col2" ]; then
。