Как проверить строку в пути к файлу в bash? Я пытаюсь:Bash - проверить строку в пути к файлу
if [[$(echo "${filePathVar}" | sed 's#//#:#g#') == *"File.java"* ]]
, чтобы заменить все косые черты двоеточием (:) в пути. Это не работает. Bash видит строку пути файла как путь к файлу и выдает ошибку «Нет такого файла или каталога». Цель состоит в том, чтобы увидеть путь к файлу в виде строки.
Пример: filePathVar может быть
**/myloc/SRC/File.java
в этом случае проверка должна возвращать верно.
Обратите внимание, что я пишу этот скрипт внутри задания Jenkins в качестве шага сборки.
Updates as of 12/15/15
Следующие возвращает Not found
, что является неправильным.
#!/bin/bash
sources="**/src/TESTS/A.java **/src/TESTS/B.java"
if [[ "${sources}" = ~B.java[^/]*$ ]];
then
echo "Found!!"
else
echo "Not Found!!"
fi
Следующие возвращает Found
, который также также неправильно (удалены пространство вокруг компаратора =
).
#!/bin/bash
sources="**/src/TESTS/A.java **/src/TESTS/C.java"
if [[ "${sources}"=~B.java[^/]*$ ]];
then
echo "Found!!"
else
echo "Not Found!!"
fi
Операция сравнения явно не работает.
Заменить все слэши двоеточием: '$ {filePathVar // \ //.}'. Но почему вы хотите это сделать? – 4ae1e1
'' s # // #: # g # ''имеет двойную косую черту ... – Jahid
См. Обновленный вопрос. – naspras