测试循环内多个文件的存在

Testing presence of multiple files within loop

假设一个 bash 脚本被传递了四个命令行参数。这些参数中的每一个都代表输入文件的路径和名称(即 INF1INF2INF3INF4)。我想评估这四个输入文件中的每一个,如果它存在并且 - 如果文件不存在指定 - 退出脚本。

#!/bin/bash

# Assigning commandline arguments
INF1=
INF2=
INF3=
INF4=

# Check if input files exist
if [ ! -f  ]; then
    echo -ne " ERROR | File not found: \n"
    exit 1
fi
if [ ! -f  ]; then
    echo -ne " ERROR | File not found: \n"
    exit 1
fi
if [ ! -f  ]; then
    echo -ne " ERROR | File not found: \n"
    exit 1
fi
if [ ! -f  ]; then
    echo -ne " ERROR | File not found: \n"
    exit 1
fi

我认为在这里有四个单独的 if 语句是不必要的,并且可以使用单个 if 语句实现相同的功能,并将其包装到一个循环中。如何减少这方面的代码?

您可以声明一个数组并分配变量并循环遍历它。

ARRAY=()
ARRAY+=
ARRAY+= ..

for i in "${arrayName[@]}"
do
   : 
   # do whatever on $i
done

在脚本中

#!/bin/bash

for v; do
if [ ! -f "$v" ]; then
    echo "ERROR | File not found: $v"
    exit 1
fi
done