脚本内STDOUT重定向至文件异常的问题求助
脚本内STDOUT重定向至文件异常的问题求助
刚搞定了脚本处理名称带空格的目录的问题(之前的问题编号1447738,再次感谢各位!),现在我想把脚本的输出写入一个文本文件,却碰到了棘手的问题。
我的脚本代码如下:
find . -type d -print0 | while read -r -d $'\0' dir; do cd "$dir" for file in *.ogg *.wav *.mp3 do duration=$(ffprobe "$file" 2>&1 | awk '/Duration/ { print $2 }') echo -e "$duration\t$file" done | sort -n cd - > /dev/null done
我原本以为只要把echo那行改成下面这样,就能把输出写入文件:
echo -e "$duration\t$file" > length-check.log
结果怪事发生了:不加重定向的时候,脚本的输出完全正常,但加了>之后,日志文件里只有一行内容:*.ogg*.wav*.mp3。
我知道可以通过这种方式运行脚本来获取输出:
./length-check.sh > length-check.log
但我还是想弄明白,脚本内部的写法到底哪里出错了,希望有人能帮我指出正确的写法。
再次感谢大家的帮助!
备注:内容来源于stack exchange,提问作者JamesB
相关产品推荐
相关产品推荐

