/ / Čo je nastavené - $ progname "" $ @ "" znamená shell shell? linux, shell

Čo je to "set -" $ progname "" $ @ "" znamená shell shell? linux, shell

Aktuálne čítam tento riadok z nášho konfiguračného skriptu configure.ac. Mám na Googli vyhľadávanie, ale nemôžem ho nájsť.

Predpokladám, že je shell shell, ale čo to znamená, najmä pre -- ?

set -- "$progname" "$@"

odpovede:

2 pre odpoveď č. 1

Na -- je bash zabudovaný aj niečo veľa unix príkazy použiť na označenie na konci príkaz Možnosti.Takže ak máte niečo ako:

grep -- -v file

na -v vyhral "t vykladať grep možnosť, ale parameter (takže môžete grep pre -v).

Na $@ Zoznam všetky parametre, ktoré prechádzajú do skriptu (čo predpokladám set príkaz je súčasťou).

Na -- zabezpečuje akejkoľvek možnosti prešiel v ako súčasť skriptu vyhral "t dostať interpretovať ako možnosti pre set, ale ako možnosti pre príkaz označovaný $progname variabilné.


0 pre odpoveď č. 2

z help set:

  --  Assign any remaining arguments to the positional parameters.
If there are no remaining arguments, the positional parameters
are unset.

Dôvodom pre -- je zabezpečiť, že aj keď "$progname" alebo "$@" obsahovať čiarky, že sa nemôže vykladať ako možnosti príkazového riadka.

set zmení pozičných parametrov, ktoré je uložené v $@. Takže v tomto prípade sa pridá "$progname" na začiatku pozičných parametrov prijatý skript.