Как объяснил pLumo , ваш тест всегда будет успешным.
Что вам нужно сделать, так это проверить, расширяется ли ваш паттерн $SSHPATH/$ID.*
во что-то. Это отличается от проверки с помощью -f
, является ли это обычным файлом, поскольку шаблон может расширяться до нескольких имен, а проверка -f
может применяться только к одному пути.
Локально это можно сделать с помощью
set -- "$SSHPATH/$ID".*
if [ -e "$1" ]; then...; fi
Это установит позиционные параметры ($1
, $2
и т. д. )на имена, соответствующие шаблону, указанному в set
. Операторы if
затем проверяют, является ли первое совпадение существующим именем (шаблон останется нераскрытым в большинстве оболочек, если он ничему не соответствует ).
Чтобы выполнить это черезssh
:
ssh user@host "set -- '$SSHPATH/$ID'.*; [ -e \"\$1\" ]"
Нечеткие кавычки гарантируют, что $SSHPATH
и $ID
расширяются локальной оболочкой , а "$1"
расширяются удаленно.
Это даст вам нулевой статус выхода ("успешно" ), если шаблон соответствует существующему имени, и не -нулевой ("неудачный" ), если нет (. ] или если ssh
каким-то образом не удалось ).
Вы можете использовать это в операторе if
следующим образом:
if ssh user@host "set -- '$SSHPATH/$ID'.*; [ -e \"\$1\" ]"; then
# do something for success
else
# do something for failure
fi
Чтобы проверить отсутствие-существования, отмените тест:
if ssh user@host "set -- '$SSHPATH/$ID'.*; [ ! -e \"\$1\" ]"; then
# do something for failure
else
# do something for success
fi
Я проигнорировал использование вами sshpass
, но вы можете просто добавить префикс ssh
с ним, как вы сделали в вопросе.
VLC на Android поддерживает SFTP, поэтому на сервере не требуется ничего, кроме SSH (По крайней мере, в тех редких случаях, когда я получаю доступ к видео на своем ПК с телефона, эта комбинация работает нормально ).