测试循环内多个文件的存在
Testing presence of multiple files within loop
假设一个 bash 脚本被传递了四个命令行参数。这些参数中的每一个都代表输入文件的路径和名称(即 INF1
、INF2
、INF3
、INF4
)。我想评估这四个输入文件中的每一个,如果它存在并且 - 如果文件不存在指定 - 退出脚本。
#!/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
假设一个 bash 脚本被传递了四个命令行参数。这些参数中的每一个都代表输入文件的路径和名称(即 INF1
、INF2
、INF3
、INF4
)。我想评估这四个输入文件中的每一个,如果它存在并且 - 如果文件不存在指定 - 退出脚本。
#!/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