![대화 분할 오류 [닫기]](https://linux55.com/image/3576/%EB%8C%80%ED%99%94%20%EB%B6%84%ED%95%A0%20%EC%98%A4%EB%A5%98%20%5B%EB%8B%AB%EA%B8%B0%5D.png)
pwd 외에 하위 디렉터리가 두 개 이상 있는 경우 다음 스크립트에서 분할 오류가 발생합니다. 프로그램이 오류 메시지와 함께 종료되며 쉘을 재설정해야 합니다.
예: /
스크립트를 시작하고 실행합니다. 나는 에서 까지 잘 탐색 /
합니다 /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
. 대화 상자 텍스트 상자가 파일인지 확인하면 우선 세그폴트를 방지할 수 있을 것입니다.