我使用bash脚本修改输入和输出的定义:
###Original definition input vs. output:
infile=$1
outfile="${infile}.mlf"
tmpfile="${infile}.tmp"
tmpfile1="${infile}.tmp1"
用于不同的文件夹,因此脚本,输入和输出位于不同的文件夹中:
###Modified definition input vs. output:
mid=$1
infile="/var/www/tmp/input/$mid.vtt"
outfile="/var/www/tmp/output/$mid.mlf"
tmpfile="{infile}.tmp"
tmpfile1="${infile}.tmp1"
我想运行这个脚本。它将用于转换文本文件" $ mid.vtt" (mid表示多媒体ID)来自"输入"文件夹到" $ mid.mlf"到"输出"夹。我修改了它,但显示了一些错误消息:
" cat:/var/www/tmp/output/1.vtt.vtt:没有这样的文件或目录" " cat:/var/www/tmp/output/1.vtt.vtt.tmp1:没有这样的文件或目录" " rm:无法删除`/var/www/tmp/output/1.vtt.vtt.tmp1' ;:没有这样的文件或目录"
整个bash脚本如下。我只更改了输入与输出的定义。
###input vs. output
mid=$1
infile="/var/www/tmp/input/$mid.vtt"
outfile="/var/www/tmp/output/$mid.mlf"
tmpfile="${infile}.tmp"
tmpfile1="${infile}.tmp1"
i=1
touch $tmpfile
###script
cat $infile | grep -v 'WEBVTT' | grep -v "\--" | grep -v '^$' | sed 's/?/./g' | sed 's/!/./g' | tr -d '.' | tr -d "," | tr -d ";" | tr -d ":" | awk '{ print tolower($0) }' > $tmpfile
nlines=$(cat $tmpfile | wc -l)
while [ $i -le $nlines ]
do
line=$(cat $tmpfile | sed $i'q;d')
printf '%s\n' $line | sed '/^\s*$/d' >> $tmpfile1
i=$[$i+1]
done
###export to output
echo "#!MLF!#" > $outfile
echo "\"*/dummyfile.lab\"" >> $outfile
cat $tmpfile1 | awk '{if($0 !~ /\*/) print "0 0 "$0; else print $0}' >> $outfile
echo "." >> $outfile
###deleting tmp files
rm $tmpfile
rm $tmpfile1
我不知道问题出在哪里。我使用chmod设置了正确的权限。输入文件存在,文件夹存在..
答案 0 :(得分:0)
现在工作正常。
mid = $ 1 infile =“/ home / var / www / vids / $ mid / $ mid.vtt” OUTFILE = “/无功/ WWW的/ tmp / VTT到MLF / $ {MID} .mlf” TMPFILE = “/无功/ WWW的/ tmp / VTT到MLF / $ {MID}的.tmp” tmpfile1 = “/无功/网络/ TMP / VTT到MLF / $ {中间} .tmp1”