2

bash スクリプトを作成しましたが、変数が空かどうかの条件をテストしているときにエラーが発生します。

以下はスクリプトの例です。

変数 a と fne に値を代入するために実行されるコマンドについては言及していませんが、

#! /bin/bash

for f in /path/*
do
    a=`some command output`
    fne=`this command operates on f`
    if[ -z "$a" ]
    then
        echo "nothing found"
    else
        echo "$fne" "$a"
    fi
done

エラー: 予期しないトークン "then" 付近の構文エラー。

次のような別のバリエーションを試しました。

#! /bin/bash

for f in /path/*
do
    a=`some command output`
    fne=`this command operates on f`
    if[ -z "$a" ]; then
        echo "nothing found"
    else
        echo "$fne" "$a"
    fi
done

再び同じエラー。

このように比較してみると:

if[ "$a" == "" ]; then

再び同じエラー。

エラーの理由がわかりません。変数 a の値は次のようになります。

それと何か (1) : [x, y]

スペース、ブラケット、コンマ、コロンが含まれます。比較のために、変数名を二重引用符で囲んでいます。

4

1 に答える 1

8

の後のスペースがありませんif:

#! /bin/bash

for f in /path/*
do
    a=`some command output`
    fne=`this command operates on f`
    if [ -z "$a" ]; then
        echo "nothing found"
    else
        echo "$fne" "$a"
    fi
done

補足:vi編集に使用していた場合、構文色のタイプミスが発生します...

于 2013-10-26T08:05:59.457 に答える