order_file="order"
read_order_file() {
while read line; do
#get file and file path from order file
b=$(echo $line | awk '{ print $2 }')
a="x86_64${b}"
echo $a
if [ -f $a ]
then
echo 'ok'
else
echo 'No'
fi
done < $order_file
}
read_order_file
在上面的代码中,我正在使用while循环读取一个订单文件,并获得一个带有变量a
路径的文件名。我需要检查文件是否存在。我用if [-f $a ]
,但条件总是失败。当我echo $a
显示正确的文件和路径。为什么呢?
当您的订单文件有以rn
(Windows行结尾)结尾的行时,$a
将在其名称中有r
。
您可以在运行脚本之前更改order_file
或更改脚本:
将done
行改为
done < <( tr -d 'r' < $order_file)
或引用变量(文件名可以有空格):
done < <( tr -d 'r' < "$order_file")