我正在运行这样的脚本来转码我的音频文件:
#!/bin/bash
acodec="vorb"
arate="256"
ext="ogg"
vlc="/usr/bin/vlc"
fmt="mp3"
for a in *$fmt; do
$vlc -I dummy -vvv "$a" --sout "#transcode{acodec=$acodec,ab=$arate,channels=2}:duplicate{dst=std{access=file,mux=ogg,dst=\"$a.$ext\"}" vlc://quit
done
并尝试将该脚本输出重定向到如下文件:
./transcode.sh > /media/sf_Downloads/transcode.log
但只接收 0 字节文件。为什么?
答案1
VLC 正在写入stderr
而不是stdout
。您可以通过调用如下脚本在日志重定向中修复此问题:
./transcode.sh > /media/sf_Downloads/transcode.log 2>&1
或者以 Bash 特定的方式:
./transcode.sh &> /media/sf_Downloads/transcode.log
stdout
您还可以通过2>&1
在循环内的行末尾添加 VLC 命令来在脚本内进行重定向。然后,您可以像之前尝试的那样调用该脚本:
./transcode.sh > /media/sf_Downloads/transcode.log
并直接获取预期的记录结果。
欲了解更多信息,请参见