Ваша первая команда аналогична
if [ "some string" ]; then... fi
что всегда будет верно.
Вторая команда почти правильная, но вам нужно поместить !
в кавычки или экранировать ее, иначе она будет интерпретирована вашей оболочкой.
Двойные кавычки всей команды и одинарные кавычки пути, чтобы избежать проблем со специальными символами внутри пути. Убедитесь, что *
находится вне одинарных кавычек :
.
if sshpass -p "$SSHPASS" ssh root@$SSHHOST "test ! -f '$SSHPATH/$ID.'*"; then... fi
Если ваш шаблон соответствует нескольким файлам, тест завершится неудачно .
Вместо того, чтобы перемещать отдельные файлы, я бы попытался переместить содержащий их каталог.
Предположим, что путь похож на
/opt/foopackage/foo.bin
Вместо привязки к foo.bin
вы можете попробовать переместить /opt/foopackage
полностью и привязать его к тому NTFS.
Если это показывает такое же поведение, вы можете попробовать переместить каталог верхнего уровня(/opt
в этом примере ).
На мгновение отредактирую, я не совсем уверен, что это хорошая идея, поскольку различия в моделях разрешений между Linux Windows (и расширением NTFS )могут привести к некоторым странностям (I' Я думаю, что вещи могут быть записываемыми или исполняемыми во всем мире, когда они не должны быть ).
Изменение размера диска NTFS, создание пространства для тома в собственном формате Linux для вашей ОС SD-образа для монтирования в/opt
(или что-то еще подходящее )— еще одно потенциальное решение, которое кажется «более чистым».