我正在编写一个bash脚本,该脚本循环遍历一个很大的数据文件,我提取了我需要使用的关键部分。当我尝试执行此操作时似乎很琐碎,但我需要做的只是类似于
string1=...
string2=...
correct=0
for i in 1..29
do
if [string1[i] == string2[i]]
then
correct=correct+1
fi
done
当我尝试执行此类操作时,我会得到一个Bad Substitution
,我认为这是因为某些键的外观如下,
`41213343323455122411141331555 - key`
`3113314233111 22321112433111* - answer`
在我的情况下,发现的空格和职业*
不需要特殊处理,只需对每个索引进行简单比较即可。
#!/bin/bash
answersCorrect=0
for i in $(nawk 'BEGIN{ for(i=1;i<=29;i++) print i}')
do
if [ "${answer:i:1}" = "${key:i:1}" ]
then
answersCorrect=$answersCorrect+1 #this line#
fi
done
我现在没有编译器错误,但是我认为我没有正确地递增answersCorrect
。当我输出时,它类似于0+1+1+1
而不是3
(此段在while循环内使用)
该行的固定解决方案:answersCorrect=$((answersCorrect+1))
答案 0 :(得分:1)
最初的问题已通过注释和@Mikel的一些额外工作解决。 一种替代方法是在将字符串转换为行之后比较字符串。
diff --suppress-common-lines <(fold -w1 <<< "${string1}") <(fold -w1 <<< "${string2}") |
grep -c "^<"