2015-11-07 1 views
0

Идея - проверить удалённую папку. Он существует или нет? Я стараюсь этоSSH горячая проверка удаленного каталога существует

SSH -p 22 -tt [email protected] «баш -d/дома/test22

и она отлично работает

/дома/test22:/home/test22: это каталог Подключение к серверу.com закрыто.

Но когда я пытаюсь использовать его с «IF» - это неправильно ... всегда говорил, «что существует каталог»

#!/bin/bash 

if [ "ssh -p 22 -tt [email protected] 'bash -d /home/test22'" ]; then 
    echo "That directory exists" 
else 
    echo "That directory doesn't exists" 
fi 

Можете ли вы показать правильный пример?

Спасибо!

+1

Этот ответ выглядит как сообщение об ошибке, а не как «результат». Такая ошибка записывается в 'stdout', выход ошибки. Я не вижу, как вы хотите использовать это в условном выражении. Возможно, вы захотите взглянуть на команду 'file'. Как всегда, для команды есть 'man page'. – arkascha

+0

Я просто хочу проверить удаленный каталог и запустить зависящее состояние. –

+3

Возможный дубликат [Как проверить, существует ли каталог через ssh и возвращать результаты на главный компьютер] (http://stackoverflow.com/questions/15927911/how-to-check-if-dir-exist-over-ssh-and -return-results-to-host-machine) – jayant

ответ

3

Команда использования не bash но test или его псевдоним [:

if ssh -p 22 -tt [email protected] 'test -d /home/test22'; then 
    echo "That directory exists" 
else 
    echo "That directory doesn't exists" 
fi 

Другая важная вещь в том, что [] не является частью синтаксиса if. if всегда следует команде, а if оценивает состояние своего выхода. Поэтому нет необходимости окружать команду ssh с помощью [].

-d dir фактически являются аргументами команды test или [.

test -d dir 
[ -d dir ] 

идентичен, последняя форма требует закрытия ] аргумента.

+0

он работает - спасибо! –

+0

Принять ответ, может быть? – SzG

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