Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
If statement Else语句未被执行-Unix_If Statement_Unix_Awk - Fatal编程技术网

If statement Else语句未被执行-Unix

If statement Else语句未被执行-Unix,if-statement,unix,awk,If Statement,Unix,Awk,我试图运行一个带有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$

我试图运行一个带有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
n=1
对于((i=1;i父${i}
awk'NR==FNR{a[$1]=$0;next}{if($1 in a)打印a[$1];else打印$0}'ped父项${i}>>ped_plus
猫ped_plus | awk'$2!=0{print$2,0,0}'| awk'!a[$1]+'>tmp_公畜
cat ped|U plus | awk'$3!=0{print$3,0,0}'| awk'!一个[$1]+'>tmp|U大坝
((n2=n+i))
awk'NR==FNR{a[$1];next}!(a中的$1){print$0}'ped_加上tmp_sire>sires${n2}
awk'NR==FNR{a[$1];next}!(a中的$1){print$0}'ped_加上tmp_dam>dams${n2}
其他的
echo“你的文件看起来不错。”
i=99
fi
完成
它应该打印消息
您的文件看起来不错。
,但这并没有发生。

有什么想法吗?

如果要检查0以上的值,请使用
-gt
,而不是
-ge

或者查看
人工测试
,您会发现选项
-s

if [ -s sires${i} ] || [ -s dams${i} ]; then

如果要检查的值超过0,请使用
-gt
,而不是
-ge

或者查看
人工测试
,您会发现选项
-s

if [ -s sires${i} ] || [ -s dams${i} ]; then

您确认过它不是每次都使用
if
分支而不是
else
?什么时候
wc-l
会返回小于零的值?您可以使用
break
而不是
i=99
我正在查找个人(家长)列表的家长(在ped中)。当它们都已在文件
ped_plus
中时,
sires${n2}
dams${n2}
应该是空的,然后
wc-l
将为零。我将使用
break
而不是
I=99
。谢谢。您确认过它不仅仅是每次使用
而不是
else
分支吗?
wc-l
何时会返回小于零的值?您可以使用
break
而不是
i=99
我正在寻找个人(父母)列表的父母(在ped中)。当所有人都已在文件
ped_plus
中时,
sires${n2}
dams${n2}
应该为空,然后
wc-l
将为零。我将使用
break
而不是
I=99
。谢谢。