2013-09-30 4 views
-3

Все дублирующие я вижу до сих пор (например, one, two и three) предлагают какую-то чушь:Loop в то время как файл существует

while [ -f "toEvaluate.txt"] 
do 
    sleep 1 
done 

Он производит

fitness.sh: line 22: [: missing `]' 

мне. Мой bash не нравится синтаксис [ -f "toEvaluate.txt"]. Что не так?

+1

В какой «глупости» вы имеете в виду? – chepner

+0

Обратитесь к предложенной здесь «ерунде» (http://superuser.com/a/491100). Этот ответ относится к одному из вопросов, на которые вы ссылались, и ** точно ** отвечает на проблему, с которой вы столкнулись. – devnull

+0

Я поддержал этот ответ. Но я мог понять, что он говорит, только после получения ответа здесь. Этот вопрос задается очень грязным способом (имена/строки ужасны там, и никакого сна не хватает, что заставляет вас думать, что это проблема), и принят неправильный ответ (который предполагает, что 'inotify' и' [['' необходимо использовать вместо пробела между цитатами '' 'и'] '). Кроме того, ответ, который вы говорите, говорит в терминах if-exist, а не while-exists, что также отвлекало меня. Поэтому каждый должен ответить на мой вопрос как первичный, а не наоборот. – Val

ответ

6

Пространство между [, ] и прилагаемые аргументы важны. Вы должны использовать

while [ -f "toEvaluate.txt" ] 
    do 
    sleep 1 
    done 
7

Синтаксическая ошибка:

должно быть:

[ -f "toEvaluate.txt" ] 

Скобки нужны пробелы до и после - они Баш встроенные команды, "слово" в оболочке

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