bash argumentumok továbbadása

Sziasztok! Vegyük az alábbi szkriptet, amit meghívok idétlen escapelt spaceokkal, és szeretném a szriptből ezeket megőrizve továbbadni. script.sh :

#!/bin/bash

PULSE_SINK="${some_value}" ${*} &
./script.sh ffplay "Egy\ video\ file.mp4"

Itt az ffplaynek fontos, hogy az "Egy\ video\ file.mp4" egy argumentumként érkezzen.

Ez nemcsak ffplay és ffmpeg-gel lesz használva, és a fileok spacementesítése nem jön szóba. Ötlet?

Hozzászólások

ChatGTP:

Ahogy értelmezem, szeretnél egy módot arra, hogy az ffplay szkriptedet hívd meg úgy, hogy a szkript paramétereként átadott fájlnevekben lévő szóközöket megőrizd. Erre megoldást találhatsz a következőképpen:

Először is, az Egy\ video\ file.mp4 helyett egy változót használj, ami tartalmazza ezt a fájlnevet, és ezt a változót használják a szkriptben. Majd ezt a változót hívd meg a szkripteddel.

Példaként:

script.sh:

#!/bin/bash

PULSE_SINK="${some_value}" "${@}" &

# Példa változó a fájlnévhez
video_file="Egy video file.mp4"

# Az ffplay meghívása a változóval
./script.sh ffplay "${video_file}"
 

 

Ez a módszer biztosítja, hogy a szóközökkel ellátott fájlnevek érintetlenek maradjanak a szkriptben. A "$@" azt jelenti, hogy továbbítja az összes paramétert, amit a szkriptnek átadtak, így a szóközökkel rendelkező fájlnevek megőrződnek.

Használd ezt az elvet más programokhoz is, amelyek szóközöket tartalmazó fájlneveket használnak! Ha valami másra van szükséged, kérlek, szólj!

1904.04.08.
RIP Jákub.
neut @

Ezeket en is a "$@"-al szoktam, az szetesik elemeire. Ha a sajat script is kap sajat parametert, amit nem akarok tovabbadni, akkor azt elotte meg shift-tel feldolgozom, eltuntetem, es utana jon a "$@".

A strange game. The only winning move is not to play. How about a nice game of chess?