我有一系列具有标准化名称的压缩文件(file1pop.zip、...、filenpop.zip)。在每个文件中,我都有一个感兴趣的文件 popdnamei.asc,其中 i={1,n}。我想对这些文件执行两个命令(其中将 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
我想我对变量有问题$y
。我在程序运行时进行了检查,输出文件的字面意思是newypopd*.tif
用星号命名为“”,而不是用“完成”的名称 ( popdnamei.tif
) 命名。此外,没有文件写入我的 Output_Storage 目录。我想我在切割一个用星号定义的变量来完成时遇到了麻烦,而且我不完全理解它是什么。有人可以帮助我吗?谢谢你。