变量未设置为if语句


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")

相关内容

  • 没有找到相关文章

最新更新