La solución es bastante simple. Simplemente dé espacio entre if y las llaves de apertura como se muestra a continuación.
if [ -f "$File" ]; then
<code>
fi
Debe haber un espacio entre if
y [
, así:
#!/bin/bash
#test file exists
FILE="1"
if [ -e "$FILE" ]; then
if [ -f "$FILE" ]; then
echo :"$FILE is a regular file"
fi
...
Estos (y sus combinaciones) serían todos incorrectos también:
if [-e "$FILE" ]; then
if [ -e"$FILE" ]; then
if [ -e "$FILE"]; then
Estos, por otro lado, están bien:
if [ -e "$FILE" ];then # no spaces around ;
if [ -e "$FILE" ] ; then # 1 or more spaces are ok
Por cierto, estos son equivalentes:
if [ -e "$FILE" ]; then
if test -e "$FILE"; then
Estos también son equivalentes:
if [ -e "$FILE" ]; then echo exists; fi
[ -e "$FILE" ] && echo exists
test -e "$FILE" && echo exists
Y, la parte media de su secuencia de comandos hubiera sido mejor con un elif
así:
if [ -f "$FILE" ]; then
echo $FILE is a regular file
elif [ -d "$FILE" ]; then
echo $FILE is a directory
fi
(También eliminé las comillas en el echo
, ya que en este ejemplo son innecesarios)