O script usa o valor de retorno de dialog
para selecionar um item de uma lista de arquivos (ou diretórios) em um determinado diretório de origem.
O problema com o script bash é que ele usa dois valores de diretório diferentes :
let i=0 # define counting variable
W=() # define working array
while read -r line; do # process file by file
let i=$i+1
W+=($i "$line")
done < <( ls -1 /home/admin/Desktop )
FILE=$(dialog --title "List file of directory /home" --menu "Chose one" 24 80 17 "${W[@]}" 3>&2 2>&1 1>&3) # show dialog and store output
clear
if [ $? -eq 0 ]; then # Exit with OK
readlink -f $(ls -1 /home | sed -n "'echo "$FILE p" | sed 's/ //''")
fi
Esses são /home/admin/Desktop
e /home
. A prática usual faria deles um símbolo (ou seja, uma variável) e eliminaria a inconsistência:
#!/bin/bash
source=/home/admin/desktop
let i=0 # define counting variable
W=() # define working array
while read -r line; do # process file by file
let i=$i+1
W+=($i "$line")
done < <( ls -1 $source )
FILE=$(dialog --title "List file of directory $source" --menu "Chose one" 24 80 17 "${W[@]}" 3>&2 2>&1 1>&3) # show dialog and store output
clear
if [ $? -eq 0 ]; then # Exit with OK
readlink -f $source/$(ls -1 $source | sed -n "'echo "$FILE p" | sed 's/ //''")
fi
Feito isso, o resultado de readlink
seria utilizável.
O script com essa correção está incompleto:
- na verdade, não remove um arquivo
- ele não verifica se o item a ser removido é um arquivo ou um diretório
- usando a saída de
ls
(duas vezes!) não é a melhor maneira de obter uma listagem