Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2011-09-29 20:51:38

  nolin11 - Nowy użytkownik

nolin11
Nowy użytkownik
Skąd: JG
Zarejestrowany: 2011-09-29

[bash] Lista plików w dialog'u (whiptail)

Witam,

Zachciało mi się (na moją zgubę :D ) napisać skrypt co miałby mi ułatwić przekodowywanie wideo. No właśnie miał ułatwić życie ale mi utrudnił :) , już od prawie tygodnia męczy mnie dlaczego to nie działa :/ . Może trochę kodu i wyjaśnię :)

Kod:

#!/bin/bash
DEF_FMASK=Testowy*.txt
DEF_BASED=FTP/sda8
TMPF=/tmp/sh_script_temp_file.txt
TMPF1=/tmp/sh_script_temp_file1.txt
# create temp files
echo > $TMPF
echo > $TMPF1

# get basedir
whiptail --inputbox "Enter base directory" 8 40 "$DEF_BASED"  2> $TMPF
BASE_DIR=`cat $TMPF`
# trailing slash
lend=`expr substr $BASE_DIR ${#BASE_DIR} 1`
if [ $lend != / ] ; then
    BASE_DIR="$BASE_DIR/"
fi
# get file mask
whiptail --inputbox "Enter file mask" 8 40 "$DEF_FMASK" 2> $TMPF
FILTER_FILES=`cat $TMPF`

if [ -f $TMPF1 ] ; then
    rm $TMPF1
fi

#find $BASE_DIR -maxdepth 1 -type f -name "$FILTER_FILES" -printf "%f\n"  > $TMPF
dlgopt=""
echo -e "\033[36mWorking dir: '$BASE_DIR' , File filter: '$FILTER_FILES'\033[0m"
for f in $BASE_DIR$FILTER_FILES
do
    ff="${f##*/}"
    echo -en "   File: $ff\n"
#    3 param: [Tag:FileName] [Text:space] [state:off]
    dlgopt="$dlgopt '$ff' ' ' off"
done

echo -e "\033[32mSelectable items:\033[0m$dlgopt"

whiptail --separate-output --checklist "Select files" 25 75 17 $dlgopt 2>$TMPF

echo -en "\033[33mSelected items: \033[0m"
cat $TMPF
echo -e "\n----------------- END SCRIPT ------------------------"

Problem z jakim się borykam jest to ,że w ostatnim dialogu gdzie powinna być lista plików z możliwością wybrania, jest "sieczka" :
http://img820.imageshack.us/img820/5489/baddialog.jpg

Jeżeli wklepię tą linię z dialogiem normalnie w shellu i dokleję wynik z $dlgopt i tak to uruchomię to działa pięknie, a w skrypcie nie chce :( .

Lista plików to (pliki ze spacjami):

Kod:

Testowy plik 1 - test B.txt
Testowy plik 2 - test A.txt
Testowy plik 3 - test AC.txt
Testowy plik 4 - test DAC.txt
Testowy plik 5 - test AE.txt
Testowy plik 7 - test BDZ.txt
Testowy plik 8 - test BDG.txt
Testowy plik 9 - test HAA.txt

Rozwiązanie zapewnie jest banalnie proste :/ ,ale nie piszę skryptów na co dzień ale od święta ;) i po prostu nie wiem jak to zrobić żeby zadziałało...

Offline

 

#2  2011-09-29 22:23:20

  azhag - Admin łajza

azhag
Admin łajza
Skąd: Warszawa
Zarejestrowany: 2005-11-15

Re: [bash] Lista plików w dialog'u (whiptail)

Witamy na DUG-u,

aby zmienna została prawidłowo przetworzona jako element polecenia musisz skorzystać z eval:

Kod:

eval "whiptail --separate-output --checklist 'Select files' 25 75 17 $dlgopt 2>$TMPF"

Ostatnio edytowany przez azhag (2011-09-29 22:28:00)


Błogosławieni, którzy czynią FAQ.
opencaching :: debian sources.list :: coś jakby blog :: polski portal debiana :: linux user #403712

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)