Shell编码符合分段错误

时间:2013-01-07 10:32:04

标签: linux shell segmentation-fault

我有一段shell代码 run.sh ,如下所示:

#!/bin/sh
PATH=/usr/local/sbin:/usr/sbin:/sbin:$PATH
export LD_LIBRARY_PATH="../../lib"


mp3proc=mp3proc
if [ ! -f "$mp3proc" ]; then
        ln -s mp3decode $mp3proc
fi

inputsonglist="$1"
intputflag="$2

cat $inputsonglist | while read line
do
    echo "$line"
    ./"mp3proc" ${line} $inputflag
done

其中, inputsonglist 是一个txt文件,存储了mp3文件列表的完整路径,如下所示进行处理:

/home/user_01/music/wcbz.mp3
/home/user_01/music/wf_hh.mp3
/home/user_01/music/zj_lw.mp3
/home/user_01/music/zj_jjdzf.mp3
/home/user_01/music/zj_jsqsjywwd.mp3
/home/user_01/music/zj_sh.mp3
/home/user_01/music/zj_tbaw.mp3

mp3proc 是我的execetuable程序,它接受两个参数:

  1. 找到mp3文件的完整mp3路径

  2. flag,0或1

  3. 但是,当我像这样运行这个shell脚本时:

    ./run.sh list.txt 0
    

    我遇到了以下错误:

    /home/user_01/music/wcbz.mp3
    ./run.sh: line 27: 21068 Segmentation fault      ./"mp3proc" ${line} $inputflag
    /home/user_01/music/wf_hh.mp3
    ./run.sh: line 27: 21069 Segmentation fault      ./"mp3proc" ${line} $inputflag
    /home/user_01/music/zj_lw.mp3
    ./run.sh: line 27: 21070 Segmentation fault      ./"mp3proc" ${line} $inputflag
    /home/user_01/music/zj_jjdzf.mp3
    ./run.sh: line 27: 21071 Segmentation fault      ./"mp3proc" ${line} $inputflag
    /home/user_01/music/zj_jsqsjywwd.mp3
    ./run.sh: line 27: 21072 Segmentation fault      ./"mp3proc" ${line} $inputflag
    /home/user_01/music/zj_sh.mp3
    ./run.sh: line 27: 21073 Segmentation fault      ./"mp3proc" ${line} $inputflag
    

    我不知道为什么“分段错误”发生在这里??? !!!

    有人帮忙吗?非常感谢!

1 个答案:

答案 0 :(得分:2)

1)尝试直接调用mp3proc,并在segfaults时查看它。然后使用:strace -f mp3proc并查看其输出

2)检查LD_IBRARY_PATH:用绝对路径替换,或者修改它