我有一段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程序,它接受两个参数:
找到mp3文件的完整mp3路径
flag,0或1
但是,当我像这样运行这个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
我不知道为什么“分段错误”发生在这里??? !!!
有人帮忙吗?非常感谢!
答案 0 :(得分:2)
1)尝试直接调用mp3proc
,并在segfaults时查看它。然后使用:strace -f mp3proc
并查看其输出
2)检查LD_IBRARY_PATH:用绝对路径替换,或者修改它