2013-11-27 21 views
22

私は、The Linux Command Line: A Complete Introductionと同じコードを入力ページ369 が、エラーを促し:予期しないトークンの近くに構文エラー「し、」

line 7 `if[ -e "$FILE" ]; then` 

コードは次のようである:

#!/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 

私がしたいです何がエラーを導入したかを理解していますコードを変更するにはどうすればよいですか?私のシステムはUbuntuです。

#!/bin/bash 
#test file exists 

FILE="1" 
if [ -e "$FILE" ]; then 
    if [ -f "$FILE" ]; then 
    echo :"$FILE is a regular file" 
    fi 
... 

これら(およびその組み合わせ)あまりにも間違って次のようになります:

答えて

48

このように、if[の間にスペースが存在する必要があります

if [-e "$FILE" ]; then 
if [ -e"$FILE" ]; then 
if [ -e "$FILE"]; then 

これらの一方すべてOKです:

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の引用符も削除しました)

+0

[と-e、E "と]の間にありがとう、すべてにスペースが必要ですか? –

+0

スペースが必要な理由は、[実際にはコマンドであるためです。 'which'と入力すると、それが/ bin /にあることがわかります。任意の 'if [...];を書くことができます。 then 'は' if test ... 'とコマンドします。 – Coroos

関連する問題