Je veux écrire un script foo
qui appelle simplement bar
avec les mêmes arguments avec lesquels il a été appelé, en utilisant Bash ou Perl.Comment puis-je obtenir des arguments de ligne de commande non modifiés pour "envelopper" un autre outil de ligne de commande?
Maintenant, une simple façon de le faire en Perl serait
#!/bin/perl
my $args=join(' ', @ARGV);
`bar $args`;
Cependant, les valeurs ARGV ont déjà été traitées par le shell, donc si je l'appelle
foo "I wonder, \"does this work\""
bar serait être appelé comme ça
bar I wonder "does this work"
Comment puis-je obtenir la ligne de commande d'origine de sorte que je peux simplement le transmettre textuellement?
Une considération étant, bien sûr, que la valeur de retour de
system()
est la valeur de retour de l'exécution du programme, pas la sortie du programme. Il peut être nécessaire de rediriger la sortie vers un fichier et de lire le fichier, si vous essayez de collecter sa sortie. – atk@atk: dans ce cas, vous pouvez utiliser un handle de processus. – Ether
non, dans ce cas, vous utilisez IPC :: Run ou IPC :: Cmd – ysth