Conditions multiples avec si dans le script shell

Je veux vérifier si un fichier existe ou non avec le nombre de lignes = 4 dans une seule condition. Quelqu’un peut-il aider ici.

if [[ -f report]] && [[`wc -l report` -eq 4 ]]; then echo " Proceed further" else exit 1 fi 

C’est plus simple:

 { [ `wc -l < report` -eq 4 ] || exit; } 2>/dev/null echo " Proceed further" 

Remarques:

  • Si le rapport existe et a 4 lignes de long, alors le wc -l report renvoie:

     4 report 

    … qui -eq ne peut pas comprendre. A la place, faites wc -l < report qui produit un -eq friendlyly:

     4 
  • Il n’est pas nécessaire de vérifier si le rapport existe, car la redirection < fera de toute façon et renvoie le même code d’erreur.

  • Codes de sortie plus spécifiques. Si le rapport n'existe pas, le code de sortie est 2 . Si le rapport a 5 lignes, le code de sortie est 1 .