Ответ 1
Между if
и [
должно быть пробел, например:
#!/bin/bash
#test file exists
FILE="1"
if [ -e "$FILE" ]; then
if [ -f "$FILE" ]; then
echo :"$FILE is a regular file"
fi
...
Эти (и их комбинации) тоже были бы неверными:
if [-e "$FILE" ]; then
if [ -e"$FILE" ]; then
if [ -e "$FILE"]; then
С другой стороны, все в порядке:
if [ -e "$FILE" ];then # no spaces around ;
if [ -e "$FILE" ] ; then # 1 or more spaces are ok
Btw они эквивалентны:
if [ -e "$FILE" ]; then
if test -e "$FILE"; then
Они также эквивалентны:
if [ -e "$FILE" ]; then echo exists; fi
[ -e "$FILE" ] && echo exists
test -e "$FILE" && echo exists
И средняя часть вашего script была бы лучше с elif
следующим образом:
if [ -f "$FILE" ]; then
echo $FILE is a regular file
elif [ -d "$FILE" ]; then
echo $FILE is a directory
fi
(Я также сбросил кавычки в echo
, так как в этом примере они не нужны)