2013-11-26 7 views
1

У меня есть серия файлов с застежкой-молнией со стандартными именами (file1pop.zip, ..., filenpop.zip). Внутри каждого из этих файлов у меня есть файл интереса popdnamei.asc, с i = {1, n}. Я хочу выполнить две команды в этих файлах (среди которых конвертирование файлов asc в tif). Тем не менее, я не могу заставить свой скрипт bash работать. Я думаю, что неправильно понимаю, как нарезать струны на 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. Я думаю, что у меня есть проблема, измельчающая переменную, определенную звездочкой для завершения, и я не совсем понимаю, что это такое. Может кто-нибудь мне помочь? Спасибо.

ответ

2

Проблема с утверждением

y=pop*.asc 

Баша возможность расширения файла пытается найти совпадения для данного шаблона имени файла. Если совпадений не найдено, заданный шаблон присваивается переменной. В вашем случае распакованный файл pop * .asc находится в подпапках $ files, поэтому совпадений не найдено, и сам шаблон присваивается переменной 'y'.

Я предлагаю иметь еще один внутренний цикл для итерации по распакованным файлам.

for y in $files/pop*.asc; 
do 
     if [ -f $y ] 
     then 
      newy=${y%%.*} #extract "popdnamei" without ".asc" extension 
      gdal_translate $y $newy.tif #command 1 
      gdalwarp -s_srs "WGS84" -t_srs "WGS84" $newy.tif $newy_PROJ.tif #command 2 
      cp $newy_PROJ.tif ../Output_Storage/ 
     fi 
done 
+0

Благодарим за объяснение, я понимаю ошибку сейчас. –

 Смежные вопросы

  • Нет связанных вопросов^_^