gpt4 book ai didi

regex - 在 bash 中,如何检查数组中的部分字符串?

转载 作者:行者123 更新时间:2023-12-04 04:39:59 25 4
gpt4 key购买 nike

如果我有一个字符串:

s='path/to/my/foo.txt'

和一个数组
declare -a include_files=('foo.txt' 'bar.txt');

如何有效地检查数组中匹配的字符串?

最佳答案

您可以遍历数组并使用 bash substring check

for file in "${include_files[@]}"
do
if [[ $s = *${file} ]]; then
printf "%s\n" "$file"
fi
done

或者,如果您想避免循环并且只关心文件名是否匹配,则可以使用 @ bash 的形式 extended globbing .以下示例假定数组文件名不包含 | .
shopt -s extglob
declare -a include_files=('foo.txt' 'bar.txt');
s='path/to/my/foo.txt'
printf -v pat "%s|" "${include_files[@]}"
pat="${pat%|}"
printf "%s\n" "${pat}"
#prints foo.txt|bar.txt
if [[ ${s##*/} = @(${pat}) ]]; then echo yes; fi

关于regex - 在 bash 中,如何检查数组中的部分字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19041646/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com