我正在尝试运行一个具有if / else条件的bash脚本,但是由于某种原因,我的else
语句没有被执行。
脚本的其余部分可以正常运行。我可以尝试使其与众不同,但我试图了解为什么此else
无法正常工作。
n=1
for ((i=1;i<=GEN;i++))
do
if [ `cat sires${i} | wc -l` -ge 0 ] || [ `cat dams${i} | wc -l` -ge 0 ]; then
cat sires${i} dams${i} > parent${i}
awk 'NR==FNR {a[$1]=$0;next} {if($1 in a) print a[$1]; else print $0}' ped parent${i} >> ped_plus
cat ped_plus | awk '$2!=0 {print $2,0,0}' | awk '!a[$1]++' > tmp_sire
cat ped_plus | awk '$3!=0 {print $3,0,0}' | awk '!a[$1]++' > tmp_dam
((n2=n+i))
awk 'NR==FNR {a[$1];next} !($1 in a) {print $0}' ped_plus tmp_sire > sires${n2}
awk 'NR==FNR {a[$1];next} !($1 in a) {print $0}' ped_plus tmp_dam > dams${n2}
else
echo "Your file looks good."
i=99
fi
done
它应该显示消息Your file looks good.
,但是这没有提示。
有想法吗?
答案 0 :(得分:4)
如果要检查大于0,请使用-gt
,而不要使用-ge
。
或查看man test
,您将找到选项-s
:
if [ -s sires${i} ] || [ -s dams${i} ]; then