解決策は非常に簡単です。以下に示すように、if と開き角括弧の間にスペースを空けるだけです。
if [ -f "$File" ]; then
<code>
fi
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
ところで、これらは同等です:
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
そして、スクリプトの中間部分は elif
の方が良かったでしょう このように:
if [ -f "$FILE" ]; then
echo $FILE is a regular file
elif [ -d "$FILE" ]; then
echo $FILE is a directory
fi
(echo
の引用符も削除しました 、この例では不要です)