Ffmpeg skript mp4 do mp3

0

Otázka

#!/bin/bash
for i in *.mp4
do
ffmpeg -i "$i" -ab 128k "${i%mp4}mp3"
done

To šarže převádí všechny *.mp4 soubory v aktuálním adresáři na mp3. ffmpeg musí být nainstalována nebo součástí, které distro. Někdy nechci všechno v CWD převedeny. Chtěl bych upravit tento skript tak, že.

  1. Pokud tam je žádné argumenty skript nic nedělá
  2. Pokud argument je *.mp4 převede všechny .mp4 .mp3
  3. Pokud argument je název souboru.mp4 je pouze převede jeden soubor do souboru.mp3

Můžu nějak pomoci s bash script code ? TIA ! Nejste si jisti, jak číst argumenty z příkazového řádku a dát je ve skriptu

$1 $2 ? Jen mi ukázat jeden příklad. Měl bych být schopen dělat ostatní.

bash ffmpeg script
2021-11-23 16:45:49
1

Nejlepší odpověď

0

Můžete si nechat shell zvládnout expanze, a pak ve skriptu smyčky přes poziční parametry. Můžete to udělat s

for i in "$@"

nebo, ještě kratší, jen

for i

jako výchozí chování je, aby smyčky přes poziční parametry.

Takže, váš skript bude vypadat

#!/usr/bin/env bash

for i; do
    ffmpeg -i "$i" -ab 128k "${i%mp4}mp3"
done

a vy byste to nazval jako

yourscript           # Do nothing
yourscript *.mp4     # Expands to all .mp4 files
yourscript file.mp4  # Process just file.mp4
2021-11-23 17:13:32

Děkuji moc. To funguje dobře. Mohu použít $i v každém bash skript, aby si přečetl první argument po scrfipt jméno ? Myslel jsem, že to bylo $1 $2 $3 atd.
teddymills

@teddymills "kouzlo" je v for i řady, které se implicitně for i in "$@", kde $@ je pole všechny poziční parametry. $1, $2 atd. jsou jednotlivé poziční parametry, pokud byste chtěli, aby přístup k nim přímo.
Benjamin W.

Jméno i je libovolný; dalo by se také použít for param nebo for file místo, a to s odkazem $param nebo $file.
Benjamin W.

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................