GNU/Linux >> Znalost Linux >  >> Linux

pomocí linuxu, jak mohu předat obsah souboru jako parametr spustitelnému souboru?

Tohle by mělo stačit:

./program `cat file`

Pokud chcete celý obsah souboru v jediném argumentu, přidejte dvojitou uvozovku (testováno v bash. Myslím, že se to může lišit shell od shellu):

./program "`cat file`" 

Příkaz

./program "$(< file)"

Vysvětlení

  1. $(cmd) spustí příkaz a převede jeho výstup na řetězec. $(cmd) lze také zapsat zpětným zatržením jako `cmd` . Preferuji novější $(cmd) protože se to hnízdí lépe než staré školy backticcks.

  2. Požadovaný příkaz je cat file . A pak z manuálové stránky bash:

    Náhrada příkazu $(cat file) lze nahradit ekvivalentním, ale rychlejším $(< file) .

  3. Uvozovky kolem ní zajišťují, že mezery jsou zachovány, pro případ, že máte v souboru mezery nebo nové řádky. Správně citovat věci ve skriptech shellu je dovednost, která velmi chybí. Citování proměnných a substitucí příkazů je dobrým zvykem, abyste se o něco později nedostali, když názvy souborů nebo hodnoty proměnných obsahují mezery nebo řídicí znaky nebo jiné podivnosti.


Můžete použít jeden z:

./program $(cat file)
./program "$(cat file)"

To je užitečné, pokud v souboru může být více slov a chcete, aby se s nimi zacházelo jako s jedním argumentem. V každém případě preferuji použití if $() zpětné zarážky jednoduše kvůli jeho schopnosti vnořovat se (což pravděpodobně není požadavek v tomto případě).

Také mějte na paměti, že tato odpověď (a další) souvisí spíše s používaným shellem než samotným Linuxem. Vzhledem k tomu, že převládající shell se zdá být bash , naprogramoval jsem to speciálně pro to.

Toto je ve skutečnosti poměrně běžný způsob zabíjení procesů pod podobnými systémy UNIX. Démon (jako cron ) zapíše své ID procesu do souboru (například /var/cron.pid ) a můžete to signalizovat něčím jako:

kill -HUP $(cat /var/cron.pid)

Linux
  1. Jak předat obsah souboru jako parametr příkazového řádku?

  2. Jak mohu randomizovat řádky v souboru pomocí standardních nástrojů v Red Hat Linuxu?

  3. Jak mohu spočítat počet složek na jednotce pomocí Linuxu?

  1. Jak používat příkaz Tar v Linuxu

  2. Jak mohu upravit všechny soubory vrácené funkcí find in vi v systému Linux?

  3. Linux + jak dát ke čtení souboru pouze konkrétnímu uživateli

  1. Jak extrahovat soubor tar.gz v Linuxu pomocí příkazového řádku

  2. Jak mohu symbolicky propojit soubor v Linuxu?

  3. Jak mohu vytisknout obsah místo názvu souboru pomocí příkazu linux find?