SoXで一括してwavファイルを処理したい(ボリュームを調整する)。私はsox file.wav -n stat -v
からの出力をVolume Adjustment
に割り当てることに問題があります。私はこれで試しました:
この操作についてはウェブ上に多くの例がありますが、これらの例は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);'は正常に動作します –
1つのコマンドに中括弧は必要ありません – tripleee