39 votes

Comment tester si deux fichiers existent ?

J'aimerais 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

54voto

Raghuram Points 26896

Essayez d'ajouter une parenthèse carrée supplémentaire.

if [[ -f .ssh/id_rsa && -f .ssh/id_rsa.pub ]]; then

32voto

[ -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
en

outre, si vous utilisez la solution [[ ]], vous voudrez probablement changer #!/bin/sh en #!/bin/bash la balise de votre question.

14voto

jørgensen Points 5370

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

[ -f file1 ] && [ -f file2 ]

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X