Skrypt ffmpeg z mp4 na mp3

0

Pytanie

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

Ten pakiet konwertuje wszystkie pliki *.mp4 w bieżącym katalogu w formacie mp3. ffmpeg musi być zainstalowany lub jest włączony w ten dystrybucji. Czasami nie chcę, aby wszystko w CWD nawracał. Chciałbym zmienić ten skrypt tak, aby.

  1. Jeśli argumenty nie, skrypt nic nie robi
  2. Jeśli argument *.mp4, on przetwarza cały plik .mp4 do pliku .mp3
  3. Jeśli argumentem jest filename.mp4, konwertuje tylko jeden plik dla pliku filename.mp3

Czy mogę uzyskać jakąś pomoc z tym kodem skryptu bash ? TIA ! Nie wiem, jak odczytać argumenty z wiersza poleceń i umieścić je w scenariusz

$1 $2 ? Po prostu pokaż mi jeden przykład. Muszę być w stanie poradzić sobie z resztą.

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

Najlepsza odpowiedź

0

Możesz pozwolić powłoce obsługiwać rozszerzenie, a następnie w skrypcie przedawkować parametrów pozycyjnych. Można zrobić to za pomocą

for i in "$@"

albo jeszcze krócej, po prostu

for i

ponieważ domyślne zachowanie polega na cyklicznym iteracji parametrów pozycyjnych.

Tak więc, twój skrypt będzie wyglądał tak

#!/usr/bin/env bash

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

i można by nazwali to tak

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

Dziękuję bardzo. Działa to dobrze. Czy mogę korzystać z $i w każdym skrypcie bash do odczytu pierwszy argument po nazwie scrfipt ? Myślałem, że to $1 $2 $3 Itd.
teddymills

@teddymills "magia" polega na for i wiersz, który sprawia, że niejawnie for i in "$@"gdzie $@ stanowi masyw wszystkich parametrów pozycyjnych. $1, $2 itp.-to indywidualne parametry pozycyjne, jeśli chcesz uzyskać do nich bezpośredni dostęp.
Benjamin W.

Nazwa i jest arbitralny; można również korzystać z for param lub for file zamiast tego i link do niego $param lub $file.
Benjamin W.

W innych językach

Ta strona jest w innych językach

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