web-dev-qa-db-fra.com

J'utilise LAME pour convertir les fichiers .wav en .mp3 et je veux savoir comment ajouter les arguments passés en ligne de commande à la sortie du nom .mp3?

Ma commande LAME est actuellement:

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

Dites-moi la commande modifiée [ou le script x.sh] pour que ma sortie mp3 , à savoir mymp3.mp3 se transforme en quelque chose comme mymp3 [ -b 128 -m j -h -V 1 -B 256 -F ].mp3

Je ne demande pas lame -b 128 -m j -h -V 1 -B 256 -F *.wav mymp3 [ -b 128 -m j -h -V 1 -B 256 -F ].mp3 Je sais déjà que cela fonctionnera avec ces options, mais pour un autre ensemble d'arguments, quelle sera la commande [ou le script x.sh]?

Ma version de sortie de LAME donne:

LAME 64bits version 3.99.5 ( http://lame.sf.net ) `et j'utilise Ubuntu 16.04

J'ai une idée que nous pourrions peut-être aligner la dernière ligne d'historique avec: history | tail -n 1 et l'ajouter en quelque sorte au fichier mp3 créé dans cette commande LAME.

EDIT:

Supposons que j'utilise z.sh some_set_of_random_options x.wav Dis-moi z.sh pour que le fichier de sortie soit x_some_set_of_random_options.mp3 Par exemple, j'ai utilisé:

z.sh -b 128 x.wav fichier-sortie: x_-b 128.mp3

z.sh -b 192 x.wav fichier-sortie: x_-b 192.mp3

z.sh -B 256 x.wav fichier-sortie: x_-B 256.mp3

EDIT 2:

Il existe un moyen d'utiliser plusieurs arguments et de les ajouter au fichier de sortie. Cela ressemble à ceci:

./x.sh 128 j x 256 et dans x.sh, utilisez $0 pour la substitution du premier argument, $1, $2 et $3 c'est ce que je vais faire personnellement. pour ma tâche.

OU

Suivez ce lien: https://linux.die.net/man/1/bash et apprenez à utiliser $* ou $@ pour la substitution de plusieurs arguments afin de simplifier le processus ci-dessus. . La réponse en tick vert a un exemple utilisant cette méthode.

2
Lucifer

Version originale

Je suggère que vous utilisez un shellscript.

  • Utilisez par exemple le nom wav2mp3

  • Stockez la ligne de commande et toutes les autres informations pertinentes dans le shellscript.

  • Je suggère que vous évitiez les caractères ayant une signification spéciale (espace [ et ]) dans le nom du fichier, remplacez par _

    #!/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"
    
  • Le rendre exécutable

    chmod ugo+x wav2mp3
    
  • Exécutez-le (il n'y a que l'écho ici pour montrer à quoi ressemblerait la réalité),

    $ ./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 avec un paramètre

Si la valeur b est la seule option que vous souhaitez modifier, vous pouvez l'avoir comme seul paramètre lorsque vous appelez wav2mp3.

#!/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

Exemples:

$ ./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 avec un nombre arbitraire de paramètres

#!/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

Exemple:

$ ./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