2011-07-26 2 views
1

У меня есть скрипт, который делает УППЫ на 4 серверов и получить файл на вызывающем сервере, но когда я запускаю его я получаю следующее сообщение об ошибке:ошибки при получении удаленного файла в скрипте

syntax error near unexpected token `then' 
line 16: `if[[ $line = $texts ]] ; then 

код выглядит следующим образом:

#!/bin/sh 
servers=("[email protected]" "[email protected]" "[email protected]" "[email protected]") 
tlen=${#servers[@]} 
count=o 
total=0 
texts="Untar done you can upload new .tar file" 
for((i=0; i<${tlen}; i++)); 
    do 
    echo "in" 
    scp ${servers[$i]}:/usr/site/html/test/test.txt /mnt/backups/updateimage 
    cat test.txt ; while read line 
    do 
    echo "in" 
    let count++ 
    echo "$line" 
    if[[ $line = $texts ]] ; then 
    echo "true" 
    let total++ 
    else echo "false" 
    fi 
    done < test.txt 
done 
exit 0 

ответ

1

Поместите пространство между if и [[

EDIT

Я только этот тест, и он правильно оценивает ложный

#!/bin/bash 

set -eu 

texts="Untar done you can upload new .tar file" 
line="foo" 

if [[ $line = $texts ]] ; then 
    echo "true" 
else 
    echo "false" 
fi 

Я подозреваю, ваша проблема в другом месте

+0

Спасибо люди !! Я новичок в этом и был настолько обречен! спасибо – uppaljaskaran

+1

Я бы подумал, что пространство между 'for' и' (('потребуется также. bash синтаксис гораздо более чувствителен к пробелам, чем C-подобные языки. –

+0

@glenn. Хорошее определение. На самом деле пространство также отсутствует между третий и четвертый серверы, что означает, что массив 'servers' содержит только 3 элемента, а третий - ОЧЕНЬ недействителен. –

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