GNU/Linux >> Znalost Linux >  >> Linux

Je Shell přenosný ke spuštění příkazu na stejném řádku po přiřazení proměnné?

Existuje nějaký standard, který pokrývá přenositelnost spuštění příkazu po přiřazení proměnné na stejném řádku?

APPLE="cider" echo hi

Jak je něco takového přenosné? Kde to bude fungovat a kde ne?

Také:moje skripty shellu začínají #!/bin/sh, pokud to má nějaký rozdíl.

Přijatá odpověď:

Pokud používáte shell kompatibilní s POSIX, ano.

Z definice příkazového jazyka shellu POSIX:(relevantní body tučně)

„Jednoduchý příkaz“ je posloupnost volitelných přiřazení proměnných a přesměrování, v libovolném pořadí, volitelně následovaná slovy a přesměrováními, ukončená ovládacím operátorem.

Když je vyžadováno provedení daného jednoduchého příkazu (to znamená, když jakákoli podmíněná konstrukce, jako je seznam AND-OR nebo příkaz case, neobešla jednoduchý příkaz), následující rozšíření, přiřazení a přesměrování budou všechna provedena z od začátku textu příkazu do konce:

  1. Slova, která jsou rozpoznána jako přiřazení proměnných nebo přesměrování podle Shell Grammar Rules se uloží pro zpracování v krocích 3 a 4.

  2. Slova, která nejsou přiřazení proměnných nebo přesměrování, budou rozšířena. Pokud některá pole po rozšíření zůstanou, první pole bude považováno za název příkazu a zbývající pole jsou argumenty příkazu.

  3. Přesměrování se provádějí podle popisu v části Přesměrování.

  4. Každé přiřazení proměnné musí být před přiřazením hodnoty rozšířeno o expanzi vlnovky, parametru, substituci příkazů, aritmetické rozšíření a odstranění kotací.

V předchozím seznamu může být pořadí kroků 3 a 4 obráceno pro zpracování speciálních vestavěných utilit; viz Speciální vestavěné nástroje.

Pokud nevyjde žádný název příkazu, přiřazení proměnných ovlivní aktuální prostředí provádění. V opačném případě přiřazení proměnných budou exportována pro prostředí provádění příkazu a neovlivní aktuální prostředí provádění (kromě speciálních vestaveb).

Také ano #!/bin/sh záležitosti. Z POSIX definice sh :

Obslužný program sh je interpret příkazového jazyka, který provádí příkazy načtené z řetězce příkazového řádku, standardního vstupu nebo zadaného souboru. Aplikace zajistí, aby příkazy, které mají být provedeny, byly vyjádřeny v jazyce popsaném v příkazovém jazyce Shell .

Takže v podstatě to říká, že sh musí dodržovat výše uvedená pravidla.

Související:Tato komponenta pro spojování kabelů s černým pláštěm se nazývá?

Takže pokud používáte OS kompatibilní s POSIX, jste v pořádku.


Linux
  1. Spustit příkaz Sudo a zadat heslo na stejném řádku?

  2. Odezva textu po příkazu Curl na stejném řádku?

  3. Jak nainstaluji skript pro spuštění kdekoli z příkazového řádku?

  1. Shell Script, čtěte na stejném řádku po ozvěně zprávy

  2. Jak zachovat konce řádků při ukládání výstupu příkazu do proměnné?

  3. Příkazový řádek pro návrat do GUI po Ctrl-Alt-F1?

  1. Jak spouštět dotazy MySQL/MariaDB přímo z příkazového řádku Linuxu

  2. Jak přiřadit výstup příkazu proměnné shellu?

  3. Jak uložit výsledek provedeného příkazu shellu do proměnné v pythonu?