GNU/Linux >> Tutoriels Linux >  >> Linux

Comment définir les paramètres lorsque Pipe Bash Script to Bash ?

Cette question a déjà des réponses ici :Comment passer un argument au script qui est entré dans bash

(2 réponses)
Fermé il y a 9 mois.

Comment exécuter un script bash avec des paramètres :

./foo.sh a b c

Lorsqu'il est compressé (par exemple, en utilisant xz ).

 xzcat foo.sh | bash <<how_to_supply_here_parameters?>>

Cas d'utilisation spécifique :

J'ai produit un très gros rmlint.sh fichier et stockez-le compressé :

time rmlint -o sh:stdout -c sh:hardlink|tee >( xz > rmlint.sh.xz )

Par conséquent, j'exécuterais normalement

./rmlint.sh -d -x -p

Cependant, le fichier est trop volumineux pour être décompressé. Par conséquent, j'aimerais faire la même chose en le canalisant vers bash :

xzcat rmlint.sh.xz | bash ...

Réponse acceptée :

Vous devez utiliser le -s option et -- pour séparer les arguments que vous souhaitez transmettre :

echo 'echo "[email protected]"' | sh -s 3 4 5

echo 'printf "{%s}" "$0"; printf " {%s}" "[email protected]"; echo' |
    sh -s -- -d -x -p --foo=bar
{sh} {-d} {-x} {-p} {--foo=bar}

Cela devrait fonctionner avec n'importe quel shell POSIX, pas seulement bash . À partir de susv4 :

-s Lire les commandes à partir de l'entrée standard.

S'il n'y a pas d'opérandes et que le -c l'option n'est pas spécifiée, le -s l'option doit être supposée.


Linux
  1. Dans Bash, quand créer un alias, quand créer un script et quand écrire une fonction ?

  2. Comment ajouter des nouvelles lignes dans des variables dans un script bash ?

  3. Comment appeler une fonction Bash dans le script Bash à l'intérieur d'Awk ?

  4. Inclure conditionnellement une étape Pipe dans un script Bash ?

  5. Comment diviser une chaîne dans un script bash

Utilisez ce script Bash utile pour observer les étoiles

Comment exécuter un script bash {7 méthodes}

Comment écrire un script bash avec des exemples

Comment exécuter un script bash

Comment définir une variable d'environnement dans Bash

Comment vérifier la syntaxe d'un script Bash sans l'exécuter ?