下面的代码我用shell脚本编写,但它有一些perl命令
当我从表单终端手动执行脚本以下时,我能够执行完整的代码
但是当我使用crontab时,我能够执行除下面代码之外的所有行
mixvl.pl $f `ls $f | awk -F "-in." '{print $1}'`-out.talaw `ls $f | awk -F "-in." '{print $1}'`
#!/bin/bash
rsync -avz /dacx /storage/mp3/
if [ $status0 -eq 0 ];then
FILES=/storage/mp3/*
for f in $FILES
do
mixvl.pl $f `ls $f | awk -F "-in." '{print $1}'`-out.talaw `ls $f | awk -F "-in." '{print $1}'`
lame -q0 -b8 `ls $f | awk -F "-in." '{print $1}'`.wav `ls $f | awk -F "-in." '{print $1}'`.mp3
rm -rf `ls $f | awk -F "-in." '{print $1}'`.wav
rm -rf `ls $f | awk -F "-in." '{print $1}'`-out.talaw
rm -rf $f
fi
fi
done
fi
你可以帮我在文件中执行perl和shell吗
答案 0 :(得分:0)
您的代码有几个问题:
status0
变量:使用$?
fi
个关键字,没有if
声明ls
mixvl.pl
。明确指定路径。试试这个:
rsync -avz /dacx /storage/mp3/
if [ $? -eq 0 ]; then
for f in /storage/mp3/*
do
fileroot="${f%-in.*}"
/path/to/mixvl.pl "$f" "$fileroot"-out.talaw "$fileroot"
lame -q0 -b8 "$fileroot".wav "$fileroot".mp3
rm "$fileroot".wav "$fileroot"-out.talaw "$f"
done
fi