Bash 使用正则表达式检查数组成员身份

Bash 使用正则表达式检查数组成员身份

我今天早上才开始编写 bash 脚本,所以请原谅我的技能不够充分。

我有一个 GitHub 操作,其中我scp将在推送事件中发生更改的文件发送到生产服务器。我尝试读取要忽略的文件名(不是 scp将更改的文件名(从文件复制到服务器).txt放入数组中,并将更改的文件名与数组中的文件名进行比较,使用正则表达式确定修改后的文件名是否以任何忽略文件名开头。
例如,如果我在忽略文本文件中有一行,内容是.github,我希望更新所有已更改且路径以.githubNOT 开头的文件。

以下是我目前所掌握的信息:

readarray -d '\n' -t ignoreFiles < .github/doNotUpdate.txt

mapfile -d ',' -t added_modified_files < <(printf '%s,' '${{ steps.files.outputs.added_modified }}')

for added_modified_file in "${added_modified_files[@]}"; do
  for ignore_start_path in $ignoreFiles; do
    echo $ignore_start_path
    if [[ ! $added_modified_file =~ "^${ignore_start_path}.*" ]]; then
      echo "$added_modified_file was modified, uploading to production via SSH"
      scp -i ./key.pem -o "StrictHostKeyChecking no" $added_modified_file [email protected]:/var/schedule/$added_modified_file
    fi
  done
done

问题是,我所进行的一系列循环将比较第一个$added_modified_file和第一个$ignore_start_path,如果它们不同,即使稍后$ignoreFiles有一个条目与$added_modified_file, it willscp` 文件匹配,也应该忽略该文件。我不知道如何解决这个问题。

主要问题:

我如何检查任何 $added_modified_file$ignoreFile从数组中的任意一个开始?

任何帮助大大感谢!

相关内容