В настоящее время моя команда LAME:
lame -b 128 -m j -h -V 1 -B 256 -F *.wav mymp3.mp3
Скажите мне измененную команду [или скрипт x.sh], чтобы мой выходной mp3, а именно mymp3.mp3, изменился на что-то вроде mymp3 [ -b 128 -m j -h -V 1 -B 256 -F ].mp3
Я не прошу lame -b 128 -m j -h -V 1 -B 256 -F *.wav mymp3 [ -b 128 -m j -h -V 1 -B 256 -F ].mp3 Я уже знаю, что будет работать над этими наборами параметров, но для другого набора аргументов, какова будет команда [или скрипт x.sh]?
Выход моей версии LAME дает:
LAME 64bits версия 3.99.5 (http://lame.sf.net) `и я использую Ubuntu 16.04У меня есть что, возможно, мы можем связать последнюю строку истории с: history | tail -n 1 и добавить ее как-нибудь в файл mp3 , созданный в этой команде LAME.
EDIT:
Предположим, что я использую z.sh some_set_of_random_options x.wav. Скажите мне z.sh, чтобы выходной файл был x_some_set_of_random_options.mp3. Например, я использовал:
z.sh -b 128 x.wav output-file: x_-b 128.mp3
z.sh -b 192 x.wav output-file: x_-b 192.mp3
z.sh -B 256 x.wav output-file: x_-B 256.mp3
EDIT:
Существует способ использования нескольких аргументов и добавления их к выходному файлу, это похоже на:
./x.sh 128 j x 256 и в x.sh используйте $0 для замены первого аргумента, $1, $2 и $3, это то, что я лично сделаю для своей задачи.
OR
Следуйте по этой ссылке: https://linux.die.net/man/1/bash и научитесь использовать $* или $@ для замены с несколькими аргументами, чтобы упростить описанный выше процесс. В этом примере используется ответ зеленого тика.
Я предлагаю вам использовать shellscript.
Используйте, например, имя wav2mp3 Сохраните командную строку и всю другую соответствующую информацию в shellscript. Я предлагаю вам избегать символов со специальным значением (пробел [ и ]) в имени файла, заменить на _#!/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"
Сделать его исполняемым chmod ugo+x wav2mp3
Запустить его (это «только» эхо, показывая, как будет выглядеть настоящая вещь), $ ./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
Если значение b является единственным вариантом, вы хотите изменить, вы можете в качестве единственного параметра, когда вы вызываете 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
Примеры:
$ ./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
Пример:
$ ./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
Я предлагаю вам использовать shellscript.
Используйте, например, имя wav2mp3 Сохраните командную строку и всю другую соответствующую информацию в shellscript. Я предлагаю вам избегать символов со специальным значением (пробел [ и ]) в имени файла, заменить на _#!/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"
Сделать его исполняемым chmod ugo+x wav2mp3
Запустить его (это «только» эхо, показывая, как будет выглядеть настоящая вещь), $ ./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
Если значение b является единственным вариантом, вы хотите изменить, вы можете в качестве единственного параметра, когда вы вызываете 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
Примеры:
$ ./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
Пример:
$ ./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
Я предлагаю вам использовать shellscript.
Используйте, например, имя wav2mp3 Сохраните командную строку и всю другую соответствующую информацию в shellscript. Я предлагаю вам избегать символов со специальным значением (пробел [ и ]) в имени файла, заменить на _#!/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"
Сделать его исполняемым chmod ugo+x wav2mp3
Запустить его (это «только» эхо, показывая, как будет выглядеть настоящая вещь), $ ./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
Если значение b является единственным вариантом, вы хотите изменить, вы можете в качестве единственного параметра, когда вы вызываете 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
Примеры:
$ ./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
Пример:
$ ./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