Question

J'ai cherché partout et je suis venu à croire qu'il n'y a aucun moyen de le faire que d'autres que d'avoir des variables globales, mais je crois que le gourou est en stackoverflow.com peut être pouvoir m'aider:

Est-il possible de bash pour piéger une fonction par le passage d'arguments à elle?
Par exemple, trap <function_name> <arg_1> <arg_2> SIGINT?

Était-ce utile?

La solution

trap permet de spécifier une commande arbitraire (ou d'une séquence de commandes), mais vous devez passer à la commande qu'un seul argument.Par exemple, ceci:

trap 'foo bar baz | bip && fred barney ; wilma' SIGINT

ce:

foo bar baz | bip && fred barney ; wilma

chaque fois que le shell reçoit SIGINT.Dans votre cas, il semble que vous voulez:

trap '<function> <arg_1> <arg_2>' SIGINT

Autres conseils

Peut-être que je ne suis malentendu vous, mais ...c'est légal:

trap "cp /etc/passwd $HOME/p" SIGINT
trap 'cp /etc/passwd /tmp/p; echo wooo hoo' SIGINT

Je ne suis pas sûr que je comprends bien ce que tu veux dire, mais si vous voulez faire un gestionnaire de signal d'appel de fonction et de passer des paramètres, trap "function arg1 arg2" SIGNAL devrait fonctionner.Par exemple trap "ls -lh /" INT va provoquer Ctrl+C dans votre shell pour entraîner ls -lh / (programme de 2 args) d'être appelé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top