Skrypt bash i lista plików z wykorzystaniem nak

Potrzebujesz pomocy z C, C++, perl, python, itp.
saper_2
Posty: 3
Rejestracja: 12 listopada 2008, 16:12

Skrypt bash i lista plików z wykorzystaniem nakładki dialog

Post autor: saper_2 »

Witam.

Piszę sobie skrypt w powłoce, który ma na celu ułatwić mi życie przy konwersji materiału wideo (mencoder/ffmpeg windowsowe wersje źle działają), ale nie problem mam z mencoderem czy ffmpeg. Problemem jest przekazanie parametrów listy do programu whiptail (dialog mi wyświetla krzaczki w putty).

Kod: Zaznacz cały

#!/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 basdir
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"
    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

Niestety, whiptail (dialog) robi sieczkę:
Załącznik bad-dialog.jpg nie jest już dostępny

Kod: Zaznacz cały

$dlgopt

Kod: Zaznacz cały

Selectable items: 'Testowy plik 1 - test B.txt' ' ' off 'Testowy plik 2 - test A.txt' ' ' off 'Testowy plik 3 - test AC.txt' ' ' off 'Testowy plik 4 - test DAC.txt' ' ' off 'Testowy plik 5 - test AE.txt' ' ' off 'Testowy plik 7 - test BDZ.txt' ' ' off 'Testowy plik 8 - test BDG.txt' ' ' off 'Testowy plik 9 - test HAA.txt' ' ' off
A jeśli obejmę $dlgopt w " " " to w $TMPF dostaję:

Kod: Zaznacz cały

whiptail usage
A jak w konsoli normalnie wkleję linię z --checklist i do tego dokleję wynik $dlgopt to ładnie wyświetla..

Domyślam się, że rozwiązanie jest pewnie banalnie proste.
Załączniki
bad-dialog.jpg
ODPOWIEDZ