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