我想延长此行调用 /usr/bin/mplayer 来录制音频流。
引用脚本record.sh
可能会并行调用多次,我需要知道在哪个上下文中错误会记录在错误文件中。
因此,我的问题是:如何更改这一行,以便在每行的开头也"$file"
打印变量的内容?
"$mplayer" $playlist $url $mplayerflags -msglevel all=2 -dumpstream -dumpfile "$file" >/dev/null 2>>"$errors" <&2 &
示例:而不是:
some arbitrary error message0
some arbitrary error message1
some arbitrary error message2
some arbitrary error message3
some arbitrary error message4
some arbitrary error message5
我想拥有:
/home/homedir/recordings/filelocation1.mp3 some arbitrary error message0
/home/homedir/recordings/filelocation1.mp3 some arbitrary error message1
/home/homedir/recordings/filelocation1.mp3 some arbitrary error message2
/home/homedir/recordings/filelocation1.mp3 some arbitrary error message3
/home/homedir/recordings/filelocation1.mp3 some arbitrary error message4
/home/homedir/recordings/filelocation1.mp3 some arbitrary error message5
答案1
你无法通过改变线路来实现这一点;只需在调用 mplayer 之前打印不带换行符的文件名即可。
答案2
例如,您可以通过管道awk
为每一行添加文件名前缀:
"$mplayer" "${playlist[@]}" "$url" "${mplayerflags[@]}" \
-msglevel all=2 -dumpstream -dumpfile "$file" 2>&1 > /dev/null |
F="$file" awk '{print ENVIRON["F"]": "$0}' >> "$errors" &
笔记:
- 我已经删除了
<&2
没有意义的内容。 - 修复了那些未加引号的参数扩展。在我看来
$playlist
,它$mplayerflags
应该是数组。