对话框分段错误

对话框分段错误

当超过 pwd 的子目录超过一个时,我遇到以下脚本的分段错误。程序终止并显示错误消息,我必须重置 shell。

例如:我开始/并运行脚本。我导航到从//etc就好了。当我尝试去/etc/httpd/那里时,我就遇到了段错误。

另一个例子:我启动脚本lsgui /etc,此时它将显示该目录,但是当我尝试导航到另一个目录时,它再次出错。

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

更新

问题是if [ -d ${lss[$result]} ];then。它正在寻找在目录中打开文件。通过将之前的语句更改为 来解决此问题if [ -d $output/${lss[$result]} ];then。我可能可以通过检查对话框文本框是否是文件来首先防止段错误。

相关内容