it-swarm.com.de

Ich verwende LAME, um .wav-Dateien in .mp3 zu konvertieren, und möchte wissen, wie ich die übergebenen Argumente in der Befehlszeile an die Ausgabe des .mp3-Namens anhängen kann.

Mein LAME-Befehl lautet derzeit:

lame -b 128 -m j -h -V 1 -B 256 -F *.wav mymp3.mp3

Sagen Sie mir den geänderten Befehl [oder das Skript x.sh], damit meine Ausgabe mp3 nämlich mymp3.mp3 in etwas wie mymp3 [ -b 128 -m j -h -V 1 -B 256 -F ].mp3 geändert wird.

Ich frage nicht nach lame -b 128 -m j -h -V 1 -B 256 -F *.wav mymp3 [ -b 128 -m j -h -V 1 -B 256 -F ].mp3 Ich weiß bereits, dass diese Optionen funktionieren, aber für andere Argumente, wie lautet der Befehl [oder das Skript x.sh]?

Meine LAME Version gibt's aus:

LAME 64bit Version 3.99.5 ( http://lame.sf.net ) `und ich benutze Ubuntu 16.04

Ich habe eine Idee, dass wir vielleicht die letzte Verlaufszeile mit: history | tail -n 1 abschließen und sie irgendwie an die mp3 -Datei anhängen können, die in diesem LAME-Befehl erstellt wurde.

EDIT:

Angenommen, ich verwende z.sh some_set_of_random_options x.wav Sag mir z.sh, sodass die Ausgabedatei x_some_set_of_random_options.mp3 lautet. Zum Beispiel habe ich Folgendes verwendet:

z.sh -b 128 x.wav Ausgabedatei: x_-b 128.mp3

z.sh -b 192 x.wav Ausgabedatei: x_-b 192.mp3

z.sh -B 256 x.wav Ausgabedatei: x_-B 256.mp3

EDIT 2:

Es gibt eine Möglichkeit, mehrere Argumente zu verwenden und sie an die Ausgabedatei anzuhängen.

./x.sh 128 j x 256 und in x.sh verwende ich $0 für die Ersetzung des ersten Arguments, $1, $2 und $3, was ich persönlich tun werde für meine aufgabe.

ODER

Folgen Sie diesem Link: https://linux.die.net/man/1/bash und lernen Sie, $* oder [email protected] für das Ersetzen durch mehrere Argumente zu verwenden, um den obigen Prozess zu vereinfachen . Die Antwort mit dem grünen Häkchen enthält ein Beispiel für diese Methode.

2
Lucifer

Originalfassung

Ich schlage vor, dass Sie ein Shellscript verwenden.

  • Verwenden Sie zum Beispiel den Namen wav2mp3

  • Speichern Sie die Befehlszeile und alle anderen relevanten Informationen im Shellscript.

  • Ich schlage vor, dass Sie Zeichen mit einer besonderen Bedeutung (Leerzeichen [ und ]) im Dateinamen vermeiden und durch _ ersetzen.

    #!/bin/bash
    
    options="-b 128 -m j -h -V 1 -B 256 -F"
    OptInName=${options//\ /_}
    
    # only testing here, so making it an echo command line
    
    echo lame "$options" *.wav "mymp3_$OptInName.mp3"
    
  • Mach es ausführbar

    chmod ugo+x wav2mp3
    
  • Führen Sie es aus (es ist "nur" ein Echo hier und zeigt, wie die reale Sache aussehen würde),

    $ ./wav2mp3
    lame -b 128 -m j -h -V 1 -B 256 -F hello.wav hello world.wav mymp3_-b_128_-m_j_-h_-V_1_-B_256_-F.mp3
    

Version mit einem Parameter

Wenn der b-Wert die einzige Option ist, die Sie ändern möchten, können Sie dies als einzigen Parameter festlegen, wenn Sie wav2mp3 aufrufen.

#!/bin/bash

if [ $# -ne 1 ]
then
 echo "Usage:    $0 <b-value>"
 echo "Example:  $0 128"
else
 options="-b $1 -m j -h -V 1 -B 256 -F"
 OptInName=${options//\ /_}

# only testing here, so making it an echo command line

 echo lame "$options" *.wav "mymp3_$OptInName.mp3"
fi

Beispiele:

$ ./wav2mp3 128
lame -b 128 -m j -h -V 1 -B 256 -F hello.wav hello world.wav mymp3_-b_128_-m_j_-h_-V_1_-B_256_-F.mp3
$ ./wav2mp3 256
lame -b 256 -m j -h -V 1 -B 256 -F hello.wav hello world.wav mymp3_-b_256_-m_j_-h_-V_1_-B_256_-F.mp3

Version mit beliebig vielen Parametern

#!/bin/bash

if [ $# -eq 0 ]
then
 echo "Usage:    $0 <parameters>"
 echo "Example:  $0 -b 192 -m j -h -V 1 -B 256 -F"
else
 options="$*"
 OptInName=${options//\ /_}

# only testing here, so making it an echo command line

# When using parameters without white space (and this is the case here),
# you should use $* and when calling the program (in this case 'lame')
# I think you should *not* use quotes (") in order to get them separated.
# So $options, not "$options" in the line below.

 echo lame $options *.wav "mymp3_$OptInName.mp3"
fi

Beispiel:

$ ./wav2mp3star -b 192 -m j -h -V 1 -B 256 -F
lame -b 192 -m j -h -V 1 -B 256 -F hello.wav hello world.wav mymp3_-b_192_-m_j_-h_-V_1_-B_256_-F.mp3
2
sudodus