Я пытаюсь проверить, существует ли каталог на удаленном сервере, используя команду sshpass с ssh. Это мой код

if [sshpass -p 'xxxx' ssh admin@xx.xx.xx.xx '[ -d /var/www/html/Dirct1/Backup/11-12-12]']; then
echo '1'
else
echo '2'
fi

Я получаю сообщение об ошибке: 3: test: [sshpass: not found. test - это имя файла моего скрипта

1 ответ1

0

Поставьте пробел после скобки: if [ sshpass ... аналогично закрывающим скобкам может потребоваться больше пробелов. Но обычно для проверки кода возврата команды вы не ставите скобки, они заменяются командой test под капотом: if [ 1 -eq 2 ] действительно (*), if test 1 -eq 2 . Если также может быть намного проще / более читабельным для проверки кода возврата впоследствии:

sshpass -p 'xxxx' ssh admin@xx.xx.xx.xx '[ -d /var/www/html/Dirct1/Backup/11-12-12]'
if [[ $? -eq 0 ]]
then 
    echo '1'
else
    echo '2' 
fi

(*) и на самом деле test заменен встроенным в Bash

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .