我正在寻找一种快速,简短和可移植的方法来检查当前工作目录中是否存在与正则表达式(env(ironment)?|requirements).ya?ml
相匹配的文件,如果是,则将其基名分配给变量$FILE
处理。
基本上,我想结合使用手柄
for FILE in environment.yml env.yml requirements.yml environment.yaml env.yaml requirements.yaml; do
if [ -e $FILE ]; then
...
fi
done
使用正则表达式,如
if test -n "$(find -E . -maxdepth 1 -regex '.*(env(ironment)?|requirements).ya?ml' -print -quit)"
then
...
fi
答案 0 :(得分:3)
将其粘贴到变量中:
file="$(find -E . -maxdepth 1 -regex '.*(env(ironment)?|requirements).ya?ml' -print -quit)"
if [ -n "$file" ]
then
echo "I found $file"
else
echo "No such file."
fi
或者,您可以使用大括号扩展来保持循环并缩短循环:
for file in {env{,ironment},requirements}.{yml,yaml}
do
if [ -e "$file" ]
then
echo "Found $file"
else
echo "There is no $file"
fi
done
或直接使用bash的extglob匹配文件:
shopt -s nullglob
for file in @(env?(ironment)|requirements).y?(a)ml
do
echo "Found $file"
done