• Publicidad

Enviar cadenas de Perl a bash

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Enviar cadenas de Perl a bash

Notapor xagutxu_perez » 2008-04-04 04:04 @211

¡Hola a todos!

Quiero enviar una cadena de caracteres desde Perl a un script bash y he leído que basta hacer en Perl: system (fichero_bash $variable1 $variable2...), y que luego, en el script bash, se reciben las variables como $1, $2... Pero pruebo en el script bash y no me los recibe (por ej., si hago echo $1 no imprime nada).

¿Qué puedo hacer?
xagutxu_perez
Perlero nuevo
Perlero nuevo
 
Mensajes: 43
Registrado: 2008-04-04 03:56 @206

Publicidad

Notapor explorer » 2008-04-04 06:51 @327

Bienvenido a los foros de Perl en Español, xagutxu_perez.

Pues con
Código: Seleccionar todo
atari@aprosi41:~/desarrollo/perl$ cat recibe_parametros.sh
#!/bin/bash
echo $0
echo $1
echo $2
echo $3
echo $4
atari@aprosi41:~/desarrollo/perl$ cat paso_datos_a_bash.pl
#!/usr/bin/perl
system('./recibe_parametros.sh "uno" "dos" 34');

sale
Código: Seleccionar todo
atari@aprosi41:~/desarrollo/perl$ ./paso_datos_a_bash.pl
./recibe_parametros.sh
uno
dos
34


Si en lugar de constantes quieres pasar variables, hay que prestar atención a las comillas del system(), para que haga la primera interpolación:
Código: Seleccionar todo
atari@aprosi4:~/desarrollo/perl$ cat ./paso_datos_a_bash.pl
#!/usr/bin/perl
$i = 'uno';
$j = 'dos';
$k = 34;
system("./recibe_parametros.sh $i $j $k");
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Comillas simples y dobles

Notapor xagutxu_perez » 2008-04-05 05:00 @250

¡Gracias!

He cambiado las comillas simples por dobles, y... voila!

He pasado 3 días buscando y buscando... Y al final eran unas XXXXX comillas...! Bueno, ahora sé algo más, que las comillas simples no interpretan variables.

Gracias de nuevo, me ha servido de gran ayuda,

Xagutxu
xagutxu_perez
Perlero nuevo
Perlero nuevo
 
Mensajes: 43
Registrado: 2008-04-04 03:56 @206

system( programa, param1, param2)

Notapor Jenda » 2008-04-12 07:30 @354

Es casi siempre mejor usar

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
 system( programa, $param1, $param2)
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


que

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
 system( "programa $param1 $param2")
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


¡Prueba a ver qué sucede si $param1 contiene algunos espacios!
-------------------------------------------------------
- Estoy aquí para practicar español. Si te ayudó mi respuesta ayudame con un mensaje privado sobre mis faltas por favor. Seguramente habrá muchas :-)
Jenda
Perlero nuevo
Perlero nuevo
 
Mensajes: 132
Registrado: 2007-10-29 06:31 @313
Ubicación: Praga, Republica Checa


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 7 invitados

cron