GNU/Linux >> Znalost Linux >  >> Linux

může xargs oddělit parametry?

proč držet xargs? bash by to zvládl dobře:

p=(`echo "param1 param2"`); echo ${p[0]} ${p[1]}

echo "'param 1' 'param 2'" | xargs -n1 | xargs [email protected] echo \[@\] \[@\]

(V mém shellu musím uniknout [] , váš počet najetých kilometrů se může lišit).


Pro ty, kteří to našli při vyhledávání, mi přijatá odpověď nefungovala.

echo "'param 1' 'param 2'" | xargs -n1 | xargs [email protected] echo \[@\] \[@\]

produkuje:

[param 1] [param 1]
[param 2] [param 2]

který nesplňuje požadavky dané původním posterem na to, aby byly xargy načteny ve více entitách, odděleny a odeslány do jediného příkazu ("echo" v OP) jako samostatné parametry. Xargs není určen pro tento druh úkolů!


Odpověď bash může fungovat.

p=(`echo "param1 param2"`); echo [${p[0]}] [${p[1]}]

produkuje:

[param1] [param2]

ale toto řešení nefunguje s více než jedním řádkem.


Správné řešení s bash pro odesílání párů řádků jako argumentů do jednoho příkazu je:

(echo 'param 1'; echo 'param 2'; echo 'param 3'; echo 'param 4') | while read line1; read line2; do echo "[$line1] [$line2]"; done

produkuje:

[param 1] [param 2]
[param 3] [param 4]


Odpověď GNU Parallel funguje, ale GNU Parallel musí být vytvořen a nainstalován. (Verze zabalená s Ubuntu není GNU Parallel.)


Linux
  1. Může Bash zapisovat do svého vlastního vstupního streamu?

  2. Speciální parametry Bash vysvětlené pomocí 4 příkladů shellových skriptů

  3. Bash poziční parametry vysvětlené pomocí 2 příkladů shell skriptů

  1. Jak mohu používat aliasované příkazy s xargs?

  2. Jak zacházet s více než 10 parametry v shellu

  3. Jak mohu spočítat počet znaků v proměnné Bash

  1. Může být příkaz linux cat použit pro zápis textu do souboru?

  2. Jak mohu získat poslední číslo z řetězce v bash?

  3. Zkontrolujte, zda některý z parametrů bash skriptu odpovídá řetězci