J'ai tapé le code de la même manière que La ligne de commande Linux: une introduction complète , page 369 mais invite l'erreur:
line 7 `if[ -e "$FILE" ]; then`
le code est comme:
#!/bin/bash
#test file exists
FILE="1"
if[ -e "$FILE" ]; then
if[ -f "$FILE" ]; then
echo :"$FILE is a regular file"
fi
if[ -d "$FILE" ]; then
echo "$FILE is a directory"
fi
else
echo "$FILE does not exit"
exit 1
fi
exit
Je veux savoir ce qui a introduit l'erreur? Comment puis-je modifier le code? Mon système est Ubuntu.
Il doit y avoir un espace entre if
et [
, comme ça:
#!/bin/bash
#test file exists
FILE="1"
if [ -e "$FILE" ]; then
if [ -f "$FILE" ]; then
echo :"$FILE is a regular file"
fi
...
Celles-ci (et leurs combinaisons) seraient toutes incorrectes aussi:
if [-e "$FILE" ]; then
if [ -e"$FILE" ]; then
if [ -e "$FILE"]; then
D'un autre côté, tout va bien:
if [ -e "$FILE" ];then # no spaces around ;
if [ -e "$FILE" ] ; then # 1 or more spaces are ok
Btw ceux-ci sont équivalents:
if [ -e "$FILE" ]; then
if test -e "$FILE"; then
Ce sont également équivalents:
if [ -e "$FILE" ]; then echo exists; fi
[ -e "$FILE" ] && echo exists
test -e "$FILE" && echo exists
Et, la partie centrale de votre script aurait été meilleure avec un Elif
comme ceci:
if [ -f "$FILE" ]; then
echo $FILE is a regular file
Elif [ -d "$FILE" ]; then
echo $FILE is a directory
fi
(J'ai également supprimé les guillemets dans le echo
, car dans cet exemple, ils ne sont pas nécessaires)