Я запускаю такой скрипт для перекодирования моих аудио файлов:

#!/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 ответ1

0

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

и получить ожидаемый результат регистрации напрямую.

Для получения дополнительной информации см., Например,

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .