检查 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:

所以它应该只打印出第二个,但它会为两个都打印 '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/ ]]