Falha de segmentação com diálogo [closed]

2

Estou recebendo uma falha de segmentação com o script a seguir quando é mais que um filho dir além do pwd. O programa mata com a mensagem de erro e eu tenho que redefinir o shell.

Por exemplo: eu começo em / e executo o script. Eu naveguei de / para /etc bem. Quando tento ir para /etc/httpd/ , é quando recebo a falha do segmento.

Outro exemplo: eu inicio o script com lsgui /etc e nesse ponto ele mostrará esse diretório, mas quando eu tento navegar para outro diretório ele falha novamente.

#!/bin/bash

output=${1-$PWD}
IFS=$'\r\n' lss=($(ls -1 $output))
for ((i=0;i<${#lss[@]};i++));do
x+=($i \"${lss[$i]}\")
done

justdir=($(basename $output))
desc=($(grep $justdir /root/lsgui.conf))
if [ -z $desc ]
then
desc=$output
fi

dialog --keep-tite --title 'lsgui' --menu $desc 40 70 ${#lss[@]} ${x[@]} 2>/tmp/lsgui.$$

if [ $? -gt 0 ]; then
rm -f /tmp/lsgui.$$
clear
exit 0
fi

result='cat /tmp/lsgui.$$'

case $? in
0)
  if [ -d ${lss[$result]} ];then
    /root/lsgui $output/${lss[$result]}
  else
    dialog --keep-tite --title "${lss[$result]}" --textbox $output/${lss[$result]} 40 70
  fi

esac

UPDATE

O problema foi if [ -d ${lss[$result]} ];then . Ele estava olhando para abrir um arquivo em um dir. Isso foi corrigido alterando a instrução anterior para if [ -d $output/${lss[$result]} ];then . Eu provavelmente poderia ter evitado o segfault, verificando se a caixa de diálogo era um arquivo ou não.

    
por Jeight 02.11.2013 / 09:47

0 respostas