Comment tester si deux fichiers existent?

Je voudrais vérifier si les deux fichiers existent, mais je reçois

test.sh: line 3: [: missing `]' 

Quelqu’un peut-il voir ce qui ne va pas?

 #!/bin/sh if [ -f .ssh/id_rsa && -f .ssh/id_rsa.pub ]; then echo "both exist" else echo "one or more is missing" fi 

Essayez d’append un crochet supplémentaire.

 if [[ -f .ssh/id_rsa && -f .ssh/id_rsa.pub ]]; then 
 [ -f .ssh/id_rsa -a -f .ssh/id_rsa.pub ] && echo both || echo not 

ou

 [[ -f .ssh/id_rsa && -f .ssh/id_rsa.pub ]] && echo both || echo not 

De plus, si vous utilisez la solution [[ ]] , vous souhaiterez probablement remplacer #!/bin/sh par #!/bin/bash conformément au tag de votre question.

[[ est la syntaxe spécifique à bash. Pour les shells compatibles POSIX, vous avez besoin de:

 [ -f file1 ] && [ -f file2 ] 
 if [ -e .ssh/id_rsa -a -e .ssh/id_rsa.pub ]; then echo "both exist" else echo "one or more is missing" fi 

Ici,

-e vérifier que seul le fichier est exits ou non. S’il quitte, il retourne true.else, il retourne faux.

-f fait la même chose mais vérifie si le fichier donné est un fichier régulier ou non.Il retourne le vrai / faux.

Ensuite, vous utilisez &&. Donc, il faut deux crochets [[..]] à exécuter.

à la place, vous pouvez utiliser -a [même que l’opérateur &&] -o [identique à || opérateur]. Si vous avez besoin de plus d’informations, passez par ce lien

http://linux.die.net/man/1/bash .