Остальное не выполняется - Unix - PullRequest
1 голос
/ 11 июля 2019

Я пытаюсь запустить скрипт bash с условием if / else, но по какой-то причине мой оператор 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., но это не случайно.
Есть идеи?

1 Ответ

4 голосов
/ 11 июля 2019

Используйте -gt, а не -ge, если вы хотите проверить больше 0. 0. 1003 * Или посмотрите man test, вы найдете опцию -s:

if [ -s sires${i} ] || [ -s dams${i} ]; then
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...