GNU/Linux >> Znalost Linux >  >> Linux

Přidávat seznam hodnot do Bash skriptu?

Mám scénář. myScript .

Chce to dva argumenty. myScript arg1 arg2 .

Řekněme, že mám tři sady argumentů.

argA1 argB1
argA2 argB2
argA3 argB3

Existuje způsob, jak spojit každý řádek do myScriptu. Jsem otevřený mít sadu args v souboru, možná použijte xargs. Nejste si jisti, co vyšetřovat.

Takže bych spustil příkaz jako faux příklad níže:

cat myFile | xargs > myScript

Nemít další skript, jen příkazy na příkazovém řádku.

Přijatá odpověď:

Jen:

xargs -l1 <myFile myScript

-l1 říká xargs ke spuštění myScript jednou za každý 1 l ine vstupu se slovy na tomto 1 l ine předán jako samostatné argumenty.

Pro xargs , slova jsou oddělena mezerami a stále můžete mít mezery (dokonce i nové řádky) ve slovech pomocí uvozovek. Všimněte si však, že zatímco xargs podporuje "..." , '...' a \ pro citaci jako u většiny shellů, jeho analýza se liší od analýzy Bourne-like shellů. Zejména v "..." není žádné zpracování zpětného lomítka ani '...' a pouze \ může uniknout novému řádku.

Například myFile může obsahovat:

word1.1 word1.2
"word 2.1" 'word 2.2'
"word'3.1" 'word"3.2'
'word"'"4'1" word\"4\'2
'word '\
5.1 "word "\
5.2

A

xargs -l1 <myFile printf 'First word: "%s", second word: "%s"\n'

by produkovalo:

First word: "word1.1", second word: "word1.2"
First word: "word 2.1", second word: "word 2.2"
First word: "word'3.1", second word: "word"3.2"
First word: "word"4'1", second word: "word"4'2"
First word: "word
5.1", second word: "word
5.2"

S GNU implementací xargs , můžete jej vylepšit na:

xargs -l1 -r -a myFile myScript

Což má tu výhodu, že nechá stdin na pokoji a nespouští myScript if myFile je prázdný.


Linux
  1. Může být Bash skript připojen k souboru?

  2. Sazba -a Je zadávání chyby ve skriptu?

  3. Bash skript k vyplnění šablony?

  1. Bash Script - příklad Hello World

  2. Spusťte bash skript z adresy URL

  3. alternativy --config java bash skript

  1. Jak ladit Bash skript?

  2. The Bash ‘?

  3. Porovnávání vzorů skriptů Bash