Tengo un script de Perl que me da una lista definida de números aleatorios que corresponden a las líneas de un archivo. A continuación, quiero extraer esas líneas del archivo usando sed
.
#!/bin/bash
count=$(cat last_queries.txt | wc -l)
var=$(perl test.pl test2 $count)
La variable var
devuelve una salida como: cat last_queries.txt | sed -n '12p;500p;700p'
. El problema es que no puedo ejecutar este último comando. Intenté con $var
, pero el resultado no es correcto (si ejecuto manualmente el comando funciona bien, así que no hay problema). ¿Cuál es la forma correcta de hacer esto?
PD: Claro que podría hacer todo el trabajo en Perl, pero estoy tratando de aprender de esta manera, porque podría ayudarme en otras situaciones.
$($cmd))
falló. Siempre dice comando no encontrado. ¡Gracias!solo con su archivo en su lugar.
En este ejemplo, utilicé el archivo / etc / password, usando la variable especial
${RANDOM}
(sobre la que aprendí aquí), y lased
expresión que tenía, la única diferencia es que estoy usando comillas dobles en lugar de simples para permitir la expansión de la variable.fuente
En el caso de que usted tiene múltiples variables que contienen los argumentos de un comando que se está ejecutando, y no sólo una sola cadena, se debe no utilizar eval directamente, ya que se producirá un error en el siguiente caso:
Resultado:
Tenga en cuenta que aunque "Algunos argumentos" se pasaron como un argumento único,
eval
léalo como dos.En cambio, puede usar la cadena como el comando en sí:
Tenga en cuenta la diferencia entre la salida de
eval
y la nuevaeval_command
función:Resultado:
fuente
eval 'echo_arguments arg1 arg2 "Some arg"'
. Entonces la salida será como en su segundo ejemplo.