標準化された名前 (file1pop.zip、...、filenpop.zip) の一連の圧縮ファイルがあります。これらの各ファイル内に、i={1,n} の対象の popdnamei.asc ファイルがあります。これらのファイルに対して 2 つのコマンドを実行したいと考えています (その中で、asc ファイルを tif に変換します)。ただし、bash スクリプトを機能させることができません。bashで文字列を切り刻む方法を正しく理解していないと思います。誰かが私の間違いを知っていますか?
###################
## Choose path
###################
cd
cd path/to/my/directory/with/zipfiles
###################
## Unzip, convert to tif and project (WGS84)
###################
for x in *pop.zip
do
echo $x
files=${x%%.*} #with this I hope to target the base name "filei", i={1,n} without the ".zip" extension
mkdir $files
unzip -d $files $x
y=popd*.asc
if [ -f $files/$y ] #with this I want to run my commands only if the file popdnamei.asc does exist in the file
then
newy=${y%%.*} #extract "popdnamei" without ".asc" extension
gdal_translate $files/$y $files/$newy.tif #command 1
gdalwarp -s_srs "WGS84" -t_srs "WGS84" $files/$newy.tif $files/$newy_PROJ.tif #command 2
cp $files/$newy_PROJ.tif ../Output_Storage/
fi
rm -rf $files
done
variable に問題があると思います$y
。プログラムの実行中に確認したところ、出力ファイルnewypopd*.tif
の名前は、「完成した」名前 ( popdnamei.tif
) ではなく、文字どおりアスタリスクが付いた「 」になっています。さらに、Output_Storage ディレクトリにファイルが書き込まれません。アスタリスクで定義された変数を切り詰めて補完するのに問題があると思いますが、それが何であるかを完全には理解していません。誰か助けてくれませんか?ありがとうございました。