web-dev-qa-db-fra.com

Comment transférer les paramètres vers une autre commande dans le script bash?

Dans mon script bash, je voudrais analyser zéro, un ou deux paramètres (le script peut les reconnaître), puis transférer les paramètres restants à une commande appelée dans le script. Comment puis je faire ça?

131
Łukasz Lew

Utilisez la commande intégrée shift pour "manger" les arguments. Ensuite, appelez le processus enfant et transmettez-le "$@" argument pour inclure tous les arguments restants. Notez les guillemets, ils doivent être conservés, car ils entraînent le développement correct de la liste des arguments.

204
unwind

bash utilise la commande shift:

par exemple. shifttest.sh:

#!/bin/bash
echo $1
shift
echo $1 $2

shifttest.sh 1 2 3 produit

1
2 3
27
Steve B.

Bash prend en charge les paramètres de sous-ensemble (voir Sous-ensembles et sous-chaînes ), afin que vous puissiez choisir les paramètres à traiter/transmettre de la sorte.

  1. ouvrez un nouveau fichier et éditez-le: vim r.sh:

    echo "params only 2    : ${@:2:1}"
    echo "params 2 and 3   : ${@:2:2}"
    echo "params all from 2: ${@:2:99}"
    
  2. exécuter:

    $ chmod u+x r.sh
    $ ./r.sh 1 2 3 4 5 6 7 8 9 10
    
  3. le résultat est:

    params only 2    : 2
    params 2 and 3   : 2 3
    params all from 2: 2 3 4 5 6 7 8 9 10
    
16
Robert Lujo