bash:FOR 循环内带有 keyworld 的 IF 条件

bash:FOR 循环内带有 keyworld 的 IF 条件

我正在处理简单的 for 循环,它循环填充并在其上执行一些命令。我需要使用 IF 语句设置过滤器以仅考虑以关键字“AllBoxes”开头的文件:

  for pdb in "${storage}"/"${experiment}"/*.pdb ; do
    pdb_name=$(basename "$pdb" .pdb)
    # if file starts with pharase AllBoxes do something on the file
    if [[ ${pdb_name} =='AllBoxes*' ]] ; then
    echo Vizualisation of ${pdb_name} is being processed!
    fi
    done

这在 IF 语句中给了我一个错误。

另外,跳过所有其余的填充(不以“AllBoxes”键世界开头)是否就足够了?我需要引入像 Else 或 Elif Break 这样的东西来退出循环吗?

答案1

该错误可能是因为您在之后需要一个空格,==但是您将无法在扩展测试中使用类似的通配符。您可以使用=~正则表达式匹配(类似AllBoxes.*),但是如果您引用它,它将按字面意思处理。如果您只关心AllBoxes文件,那么您可以将循环修改为:

for pdb in "${storage}/${experiment}"/AllBoxes*.pdb ; do

相关内容