检查 bash 中文件名路径中是否存在子文件夹
Check whether subfolder exists in path of filename in bash
我正在尝试检查子文件夹是否在文件路径中,然后 运行 仅对该子文件夹中的文件执行操作
for changed_file in $changed_files; do
echo $changed_file
if [[ $changed_filed == *'/jsonschema/'* ]];then
echo $changed_file
else
echo 'invalid'
fi
done
更改的文件包含 ewample:
.github/workflows/iglu-lint.yml
.schemas/com.myapp/my_context/jsonschema/1-0-1
所以它应该只打印出第二个,但它会为两个都打印 'invalid'。
我的问题是这张支票有什么问题?我无法获得与上述路径匹配的正确语法。
if [[ $changed_filed == *'/jsonschema/'* ]];then
我将其用作 bash 命令的一部分 github 操作试图 运行 对上次提交的最后一些文件执行操作。
对相关文件使用数组。
#!/usr/bin/env bash
changed_files=(
'.github/workflows/iglu-lint.yml'
'.schemas/com.myapp/my_context/jsonschema/1-0-1'
)
for changed_file in "${changed_files[@]}"; do
if [[ $changed_file == *'/jsonschema/'* ]];then
echo "$changed_file"
else
printf >&2 '[%s] is invalid\n' "$changed_file"
fi
done
上面测试的正则表达式等价物是这样的:
[[ $changed_file =~ /jsonschema/ ]]
我正在尝试检查子文件夹是否在文件路径中,然后 运行 仅对该子文件夹中的文件执行操作
for changed_file in $changed_files; do
echo $changed_file
if [[ $changed_filed == *'/jsonschema/'* ]];then
echo $changed_file
else
echo 'invalid'
fi
done
更改的文件包含 ewample:
.github/workflows/iglu-lint.yml
.schemas/com.myapp/my_context/jsonschema/1-0-1
所以它应该只打印出第二个,但它会为两个都打印 'invalid'。
我的问题是这张支票有什么问题?我无法获得与上述路径匹配的正确语法。
if [[ $changed_filed == *'/jsonschema/'* ]];then
我将其用作 bash 命令的一部分 github 操作试图 运行 对上次提交的最后一些文件执行操作。
对相关文件使用数组。
#!/usr/bin/env bash
changed_files=(
'.github/workflows/iglu-lint.yml'
'.schemas/com.myapp/my_context/jsonschema/1-0-1'
)
for changed_file in "${changed_files[@]}"; do
if [[ $changed_file == *'/jsonschema/'* ]];then
echo "$changed_file"
else
printf >&2 '[%s] is invalid\n' "$changed_file"
fi
done
上面测试的正则表达式等价物是这样的:
[[ $changed_file =~ /jsonschema/ ]]