首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查看具有不同文件扩展名的文件是否存在

查看具有不同文件扩展名的文件是否存在
EN

Stack Overflow用户
提问于 2019-09-17 09:28:31
回答 1查看 68关注 0票数 0

我正在编写一个条件表达式,以检查是否存在一组所需的扩展名。如下所示:

代码语言:javascript
复制
if [ ! -f "${FILE}.ext1" ] || [ ! -f "${FILE}.ext2" ] || [ ! -f "${FILE}.ext3" ]; then
        echo "Error: missing extensions"
        exit
fi

我试图通过使用一种更简单的全球化模式来做到这一点,例如:

代码语言:javascript
复制
if [ ! -f "${FILE}.{ext1,ext2,ext3}" ]; then ...

但是这是不起作用的(如果我将它与ls -l这样的不同命令一起使用,就会起作用)。错误在哪里?是否有其他方法来简化上述条件表达式?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-17 09:55:41

这里有两个问题:

  1. 通配符和支撑展开表达式不能用引号括起来。
  2. test -f命令不能处理多个参数。

一个可行的解决办法是:

代码语言:javascript
复制
for F in "${FILE}."{ext1,ext2,ext3}; do
    if [ ! -f "${F}" ]; then
        echo "not found: ${F}"
    fi
done

还要确保在脚本顶部使用#!/bin/bash作为shebang,因为大括号扩展是一种bashism,并且脚本不会移植到其他shell。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57971302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档