下面粘贴的脚本会导致以下错误:
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
答案 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
这应该可以解决问题。