Řešení je docela jednoduché. Stačí dát prostor mezi if a otevírací hranaté závorky, jak je uvedeno níže.
if [ -f "$File" ]; then
<code>
fi
Mezi if
musí být mezera a [
, takto:
#!/bin/bash
#test file exists
FILE="1"
if [ -e "$FILE" ]; then
if [ -f "$FILE" ]; then
echo :"$FILE is a regular file"
fi
...
Všechny tyto (a jejich kombinace) by byly nesprávné taky:
if [-e "$FILE" ]; then
if [ -e"$FILE" ]; then
if [ -e "$FILE"]; then
Na druhou stranu jsou všechny v pořádku:
if [ -e "$FILE" ];then # no spaces around ;
if [ -e "$FILE" ] ; then # 1 or more spaces are ok
Btw tyto jsou ekvivalentní:
if [ -e "$FILE" ]; then
if test -e "$FILE"; then
Tyto jsou také ekvivalentní:
if [ -e "$FILE" ]; then echo exists; fi
[ -e "$FILE" ] && echo exists
test -e "$FILE" && echo exists
A střední část vašeho skriptu by byla lepší s elif
takhle:
if [ -f "$FILE" ]; then
echo $FILE is a regular file
elif [ -d "$FILE" ]; then
echo $FILE is a directory
fi
(Také jsem vypustil uvozovky v echo
, protože v tomto příkladu jsou zbytečné)