Я хочу, чтобы обрабатывать кучу wav-файлов с помощью SoX (для настройки их объема). У меня возникла проблема с назначением вывода Volume Adjustment
с sox file.wav -n stat -v
. Я пробовал с этим:
Я нашел много примеров в Интернете об этой операции, но эти примеры не так сложны, как data=$(data)
. Я пробовал VOLUME_ADJUST="$(sox $1 -n stat -v)"
, но результат вывода на мой терминал не присваивался переменной. Когда я повторяю, ничего не появляется.
Спасибо за ваше предложение. Мой код выглядит следующим образом:
#!/bin/sh
RED='\033[0;31m'
NC='\033[0m'
BLUE='\033[0;34m'
GREEN='\033[0;32m'
Process() {
printf "Process with ${RED}$1${NC}\n";
printf "Volume up as high as possible?[y/n]";
read PASS;
if test "$PASS" = "y"; then
a="$(date)"
VOLUME="$(sox "$1" -n stat -v)"
#echo $VOLUME
# eval "sox -v $VOLUME_ADJUST $1 $1"
#printf $?
elif test "$PASS" = "n"; then
printf "${GREEN}Volume up skipped.${NC}"
fi
}
Process "test.wav"
Here is a pastebin to all of my code
Я уверен, что 'sox' выводит вывод на стандартную ошибку, а не на стандартный вывод. Вероятно, это дубликат, но сейчас я рисую пустоту. Для решения см., Например, http://stackoverflow.com/questions/962255/how-to-store-standard-error-in-a-variable-in-a-bash-script – tripleee
@tripleee Спасибо! 'VOLUME = $ ({sox $ 1 -n stat -v;} 2> &1);' отлично работает –
Вам не нужны скобки для одной команды. – tripleee