2013-10-26 5 views
2

Я написал сценарий bash, и я получаю сообщение об ошибке, когда проверяю условие, является ли переменная пустой или нет.bash неожиданный токен, затем ошибка

Ниже приведен пример сценария:

Я не упомянул команды, которые выполняются для присвоения значений переменных а и ФНЕ но

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

ошибка: ошибка синтаксиса около неожиданной лексемы «затем» ,

Я попробовал еще один вариант, как это:

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

опять же ошибку.

Я не уверен, в чем причина ошибки. Значение переменной а, как это:

Что-то с ним (1): [х, у]

он содержит, пробелов, скобок, запятой, толстой кишки. Я сопоставляю имя переменной в двойных кавычках.

+0

Это трудно понять, почему вы используете цикл. Кажется, вы никогда не используете переменную 'f'. – devnull

ответ

6

У вас не хватает места после 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 

Side Примечание: если вы используете vi для редактирования, она будет иметь синтаксис цвета ваш опечатка ...

+0

Спасибо. Я это понял :) –

Смежные вопросы