Quiero escribir un script foo
que simplemente llame a bar
con exactamente los mismos argumentos con los que fue llamado, usando Bash o Perl.¿Cómo puedo obtener argumentos de línea de comandos no modificados para "ajustar" otra herramienta de línea de comandos?
Ahora, una forma sencilla de hacer esto en Perl sería
#!/bin/perl
my $args=join(' ', @ARGV);
`bar $args`;
Sin embargo, los valores en ARGV ya han sido procesados por el shell, por lo tanto si llamar
foo "I wonder, \"does this work\""
barra haría llamarse así
bar I wonder "does this work"
¿Cómo puedo obtener la línea de comando original para que simplemente pueda pasarlo? ¿literal?
Una consideración es, por supuesto, que el valor de retorno de
system()
es el valor de retorno de la ejecución del programa, no el resultado del programa. Puede ser necesario redirigir el resultado a un archivo y leer el archivo, si está intentando recopilar su resultado. – atk@atk: en ese caso, puede usar un identificador de proceso. – Ether
no, en ese caso usted usa IPC :: Run o IPC :: Cmd – ysth