2009-10-08 6 views

Répondre

153

Utilisez la shift intégré dans la commande à "manger" les arguments. Appelez ensuite le processus enfant et transmettez-lui l'argument "[email protected]" pour inclure tous les arguments restants. Remarquez les guillemets, ils doivent être conservés, car ils font que l'expansion de la liste d'arguments est correctement citée.

+18

effectivement "$ @" est plus sûr que $ * – pixelbeat

+4

Quelle est la différence? –

+1

@pixelbeat: Merci, bonne prise. J'ai édité. @ Lewas Lew: voir la page liée dans le manuel. :) Fondamentalement, il gère mieux les citations. – unwind

18

bash utilise le décalage commande:

par exemple shifttest.sh:

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

shifttest.sh 1 2 3 produit

1 
2 3 
7

bash prend en charge les paramètres (voir Subsets and substrings sous- ensembles), de sorte que vous pouvez choisir les paramètres à traiter/pass comme ceci:

fichier nouveau ouvert

et le modifier: vim r.sh

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

terme, il :

chmod u+x r.sh 
./r.sh 1 2 3 4 5 6 7 8 9 10 

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 
Questions connexes