1

以下に貼り付けたスクリプトにより、次のエラーが発生します。

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
4

1 に答える 1

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

これでうまくいくはずです。

于 2012-07-30T21:20:49.097 に答える