996 votes

Comment passer tous les arguments passés à mon script bash pour une fonction de la mine?

Disons que j'ai défini une fonction abc() qui se chargera de toutes les logiques liées à analising les arguments passés à mon script.

Comment puis-je passer tous les arguments de mon script bash a reçu? Le nombre de paramètres est variable, donc je ne peux pas coder en dur les arguments passés comme ceci:

abc $1 $2 $3 $4

edit: encore Mieux, est-il de toute façon pour ma fonction pour avoir accès au script d'arguments variables?

1664voto

Gordon Davisson Points 22534

Bête noire: lors de l'utilisation d' $@,, vous devriez (presque) toujours le mettre dans les guillemets pour éviter misparsing de l'argument avec des espaces dedans:

abc "$@"

171voto

hajamie Points 638

J'avais besoin d'une variation sur ce, je l'espérons, sera utile à d'autres:

function diffs() {
        diff "${@:3}" <(sort "$1") <(sort "$2")
}

L' "${@:3}" de la partie qui signifie que tous les membres de la matrice de départ à 3. De sorte que cette fonction implémente une triés diff en passant les deux premiers arguments de diff par le biais de tri et de passer tous les autres arguments du diff, de sorte que vous pouvez appeler ça de la même façon pour diff:

diffs file1 file2 [other diff args, e.g. -y]

71voto

Mia Clarke Points 4525

L'utilisation de "$@" variable, qui s'étend à tous les paramètres de ligne de commande séparés par des espaces.

abc "$@"

67voto

Giuseppe Cardone Points 2703

Voici un simple script:

#!/bin/sh

args=("$@")

echo Number of arguments: $#
echo First argument: ${args[1]}

$# est le nombre d'arguments reçus par le script. Je trouve plus facile d'y accéder en utilisant un tableau: l' args=("$@") ligne met tous les moyens en args tableau. Pour y accéder, utilisez ${args[index]}.

32voto

Vivien Barousse Points 11435
abc $@

$@ représente tous les paramètres de votre script bash.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X