Bash - 检查文件路径中的字符串
Bash - check for a string in file path
如何检查 bash 中文件路径中的字符串?我正在尝试:
if [[$(echo "${filePathVar}" | sed 's#//#:#g#') == *"File.java"* ]]
将路径中的所有正斜杠替换为冒号 (:)。它不工作。 Bash 将文件路径字符串视为文件路径并抛出错误 "No such file or directory"。目的是让它将文件路径视为字符串。
示例:filePathVar 可以是
**/myloc/src/File.java
在这种情况下,检查应该 return 为真。
请注意,我在 Jenkins 作业中编写此脚本作为构建步骤。
Updates as of 12/15/15
下面的return是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
下面的returns Found
也错了(去掉比较器=
周围的space)。
#!/bin/bash
sources="**/src/TESTS/A.java **/src/TESTS/C.java"
if [[ "${sources}"=~B.java[^/]*$ ]];
then
echo "Found!!"
else
echo "Not Found!!"
fi
比较操作显然不起作用。
使用 bash 的内置正则表达式匹配工具更容易:
$ filePathVar=/myLoc/src/File.java
if [[ "$filePathVar" =~ File.java[^/]*$ ]]; then echo Match; else echo No Match; fi
Match
在 [[...]]
内部,运算符 =~
进行正则表达式匹配。正则表达式 File.java[^/]*
匹配任何包含 File.java
的字符串(可选后跟除 /
.
之外的任何内容)
它以更简单的方式工作,如下所示:
#!/bin/bash
sources="**/src/TESTS/A.java **/src/TESTS/B.java"
if [[ $sources == *"A.java"* ]]
then
echo "Found!!"
else
echo "Not Found!!"
fi
如何检查 bash 中文件路径中的字符串?我正在尝试:
if [[$(echo "${filePathVar}" | sed 's#//#:#g#') == *"File.java"* ]]
将路径中的所有正斜杠替换为冒号 (:)。它不工作。 Bash 将文件路径字符串视为文件路径并抛出错误 "No such file or directory"。目的是让它将文件路径视为字符串。
示例:filePathVar 可以是
**/myloc/src/File.java
在这种情况下,检查应该 return 为真。
请注意,我在 Jenkins 作业中编写此脚本作为构建步骤。
Updates as of 12/15/15
下面的return是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
下面的returns Found
也错了(去掉比较器=
周围的space)。
#!/bin/bash
sources="**/src/TESTS/A.java **/src/TESTS/C.java"
if [[ "${sources}"=~B.java[^/]*$ ]];
then
echo "Found!!"
else
echo "Not Found!!"
fi
比较操作显然不起作用。
使用 bash 的内置正则表达式匹配工具更容易:
$ filePathVar=/myLoc/src/File.java
if [[ "$filePathVar" =~ File.java[^/]*$ ]]; then echo Match; else echo No Match; fi
Match
在 [[...]]
内部,运算符 =~
进行正则表达式匹配。正则表达式 File.java[^/]*
匹配任何包含 File.java
的字符串(可选后跟除 /
.
它以更简单的方式工作,如下所示:
#!/bin/bash
sources="**/src/TESTS/A.java **/src/TESTS/B.java"
if [[ $sources == *"A.java"* ]]
then
echo "Found!!"
else
echo "Not Found!!"
fi