假设传递了四个命令行参数的 bash 脚本。这些参数中的每一个都表示输入文件的路径和名称(即INF1
,INF2
,INF3
,INF4
)。我想评估这四个输入文件中的每一个,如果它存在,并且 - 如果文件不存在,则退出脚本。
#!/bin/bash
# Assigning commandline arguments
INF1=$1
INF2=$2
INF3=$3
INF4=$4
# Check if input files exist
if [ ! -f $1 ]; then
echo -ne " ERROR | File not found: $1\n"
exit 1
fi
if [ ! -f $2 ]; then
echo -ne " ERROR | File not found: $2\n"
exit 1
fi
if [ ! -f $3 ]; then
echo -ne " ERROR | File not found: $3\n"
exit 1
fi
if [ ! -f $4 ]; then
echo -ne " ERROR | File not found: $4\n"
exit 1
fi
我认为这里有四个单独的if语句是不必要的,并且使用单个if语句可以实现相同的功能,并将其包装到循环中。如何减少这方面的代码?
答案 0 :(得分:2)
#!/bin/bash
for v; do
if [ ! -f "$v" ]; then
echo "ERROR | File not found: $v"
exit 1
fi
done
答案 1 :(得分:1)
您可以声明一个数组并协调变量并循环遍历它。
ARRAY=()
ARRAY+=$1
ARRAY+=$2 ..
和
for i in "${arrayName[@]}"
do
:
# do whatever on $i
done