当前位置: 首页 > 面试题库 >

Bash-检查文件路径中的字符串

舒嘉德
2023-03-14
问题内容

如何在bash中的文件路径中检查字符串?我在尝试:

if [[$(echo "${filePathVar}" | sed 's#//#:#g#') == *"File.java"* ]]

用路径中的冒号(:)替换所有正斜杠。没用 Bash将文件路径字符串视为文件路径,并引发错误“无此类文件或目录”。目的是将文件路径视为字符串。

例如:filePathVar可能是

** / myloc / src / File.java

在这种情况下,检查应返回true。

请注意,作为构建步骤,我正在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

比较操作显然不起作用。


问题答案:

它的工作方式如下所示:

#!/bin/bash
sources="**/src/TESTS/A.java **/src/TESTS/B.java"
if [[ $sources == *"A.java"* ]]
then
echo "Found!!"
else
echo "Not Found!!"
fi


 类似资料:
  • 我的bash脚本接收一个字符串形式的文件名(或相对路径),但是必须从该文件中读取。如果我在脚本中将文件名直接声明为文字(没有引号),我就只能从文件名中读取...这对于参数来说是不可能的,因为它们一开始就是隐式字符串。观察: 产量: 如上所述,我无法将命令行参数传递给上述例程,因为我得到的行为与引用字符串上的行为相同。

  • 问题内容: 我想转变成 是否有执行此操作的bash命令? 编辑:在我的实际情况下,该目录确实存在。 问题答案: 如果您想从路径中截取一部分文件名,则“ dirname”和“ basename”是您的朋友,并且“ realpath”也很方便。 备择方案 如果您的外壳不支持,则可以尝试 也 与…相同 因为不需要标准化路径。

  • 问题内容: Golang文件路径模块(https://golang.org/pkg/path/filepath/)包含一些用于处理路径的函数,可用于检查文件是否存在。有没有一种方法可以检查字符串是否真的构成了有效路径(无论该路径处是否有文件)? 问题答案: 这个问题听起来很简单,但实际上并非如此。这是我发现的两个可能的解决方案: 这里的想法是根据规则检查给定的文件路径。 问题 作业系统(UNIX

  • 问题内容: 我似乎无法获得任何说明如何执行此操作的搜索结果。 我要做的就是能够知道给定的路径是文件还是目录(文件夹)。 问题答案: 应该告诉你。从文档: 从fs.stat()和fs.lstat()返回的对象属于这种类型。 注意: 将 上述溶液 将一个IF; 例如,or或不存在。 如果您想要一个或方法,请尝试按约瑟夫在下面的评论中所述。

  • 问题内容: 如何使用bash脚本查找出现字符串的行号? 例如,如果文件看起来像这样, 我运行脚本来查找字符串“ line”,它将输出数字2,因为它是第一次出现。 问题答案: 鉴于您的示例仅显示字符串首次出现的行号,也许您正在寻找: 如果您确实希望所有出现(例如,如果您的示例的期望输出实际上是“ 2 \ n3 \ n”),请省略。

  • 问题内容: 我正在使用python进行文件操作。 我有一个文件路径为: 当我使用python打开文件时,它说: 但是,该文件存在于驱动器上。 可能是因为窗口包含空格,所以无法正确获取“ SEM 2”。 如何在窗口路径的路径中处理此类空格? 问题答案: 路径中的空格没有问题,因为您没有使用“外壳”来打开文件。这是Windows控制台上的一个会话来证明这一点。你做错了什么