cat:无法打开'/tmp/drive/P0.RAW':没有这样的文件或目录

时间:2012-07-30 21:04:25

标签: shell embedded-linux

下面粘贴的脚本会导致以下错误:

  

cat:无法打开'/tmp/drive/P0.RAW':没有这样的文件或目录

看起来脚本没有正确评估文件名$N。 如何$N进行评估,以便文件名如P01L.RAW,P02L.RAW等?

N=1
until [ $N -ge 10 ]; do
    cat bmpheader.bmp /tmp/drive/P0$NL.RAW > ./P0$NL.bmp
    ./quality_metric_test ./P0$NL.bmp
    N=$((N + 1))
done

1 个答案:

答案 0 :(得分:2)

你的问题是bash默认将所有大写字符解释为变量的一部分,因此它正在寻找$NL而不仅仅是$N。这就是为什么它只返回P0.RAW,因为$NL是一个未知的变量。您可以通过较小的语法调整轻松避免这种情况,使用大括号({})调用该变量。替换这个:

cat bmpheader.bmp /tmp/drive/P0$NL.RAW > ./P0$NL.bmp
./quality_metric_test ./P0$NL.bmp

有了这个:

cat bmpheader.bmp /tmp/drive/P0${N}L.RAW > ./P0${N}L.bmp
./quality_metric_test ./P0${N}L.bmp

这应该可以解决问题。