LINUX.ORG.RU

[Zenity] Не выполняет отмену

 


0

1

Есть небольшой скрипт с гуем, который переименовывает в транслит кириллицу(найден на лоре, кстати, только без гуя) Так вот, всё работает, кроме одной очень важной вещи, когда нажимаешь 'отмена' в любом из диалогов, то от продолжает работу Вот код


#!/bin/sh
zenity --info --text="Выберите путь к файлам, которые нужно перевести в транслит, для продолжения нажмите 'Ok' " 
FILE=`zenity --file-selection --directory --title="Путь к кириллице"`
  case $? in
                 0)
                        echo "Выбран \"$FILE\".";;
                 1)
                        echo "Файл не выбран.";;
                -1)
                        echo "Файл не выбран.";;
        esac 
if [ "$?" = 1 ]                      
                then                                            
                        break                                   
                fi
cd "$FILE" || exit; 
( zenity --question --text "Сейчас все файлы в папке бутут переименованы в транслит, продолжить?" )
if [ "$?" = 1 ]                         
                then                                            
                        break                                   
                fi
(
shopt -s nullglob 
for NAME in * ; do 
  TRS=`echo $NAME | sed "y/абвгдезийклмнопрстуфхцы/abvgdezijklmnoprstufxcy/"`
  TRS=`echo $TRS  | sed "y/АБВГДЕЗИЙКЛМНОПРСТУФХЦЫ/ABVGDEZIJKLMNOPRSTUFXCY/"`
  TRS=${TRS//ч/ch};
  TRS=${TRS//Ч/CH} TRS=${TRS//ш/sh};
  TRS=${TRS//Ш/SH} TRS=${TRS//ё/jo};
  TRS=${TRS//Ё/JO} TRS=${TRS//ж/zh};
  TRS=${TRS//Ж/ZH} TRS=${TRS//щ/sh\'};
  TRS=${TRS//Щ/SH\'} TRS=${TRS//э/je};
  TRS=${TRS//Э/JE} TRS=${TRS//ю/ju};
  TRS=${TRS//Ю/JU} TRS=${TRS//я/ja};
  TRS=${TRS//Я/JA} TRS=${TRS//ъ/\`};
  TRS=${TRS//ъ\`} TRS=${TRS//ь/\'};
  TRS=${TRS//Ь/\'}
  if [[ `file -b "$NAME"` == directory ]]; then
    mv -v "$NAME" "$TRS"
    cd "$TRS"
    "$0"
    cd ..
  else
    mv -v "$NAME" "$TRS"  
  fi
done ) | zenity --progress \
          --title="Перевод в транслит" \
          --text="Перевожу в транслит..." \
          --percentage=0 \
          --auto-close \
          --pulsate
zenity --info --text="Мы закончили!" 
Что делать?


проблема решена заменой
if [ «$?» = 1 ]
then
break
fi

на

[[ $? -eq 0 ]] || exit

phan13
() автор топика

> case $? in

0)

echo «Выбран \»$FILE\".";;


1)


echo «Файл не выбран.»;;


-1)


echo «Файл не выбран.»;;


esac



O_O

if [ $? -eq 0 ]
then
echo «Выбран \»$FILE\"."
else
echo «Файл не выбран.»
exit 1
fi

AITap ★★★★★
()
Ответ на: комментарий от AITap

спасибо, а то что я там написал, это в официальном мане, тоже показалось слегка странным

phan13
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.