Bash - Inserção de variável de script Perl

1

Estou tendo alguns problemas ao tentar inserir uma variável bash dentro do meu código perl. A finalidade do código é executar um determinado comando de impressão perl em um terminal usando um arquivo de script bash. Eu simplifiquei meu problema para o código abaixo:

i=5
myvar=$(perl -e 'print "AAA" x ($i)')
echo "$myvar"

Tendo uma variável i com 5 como seu valor, quero imprimir a string "AAA" tantas vezes quanto o valor de i, que é 5 neste exemplo. Para fazer isso eu quero usar o código perl dado. Atualmente, o código perl não pode ler o conteúdo da minha variável i. Isso é mais provável devido ao fato de que "" não está sendo usado para a parte em que peço o valor de i.

Mudar o 'e o' não é realmente uma possibilidade, já que o String "AAA" será substituído por códigos hexadecimais a serem usados para o shellcode. Usar o $ para executar o código perl é necessário para executá-lo no terminal como um argumento de uma função. E, claro, o valor de eu vou incrementar / mudar em um loop, então não posso simplesmente usar 5 em vez de i.

Alguma ajuda para tornar o código perl capaz de ler o valor de i ou contornar esse problema das anotações?

    
por Whitekang 09.12.2015 / 20:42

3 respostas

1

Use isso para ativar a expansão de variáveis:

myvar=$(perl -e 'print "AAA" x ('"$i"')')
    
por 09.12.2015 / 20:54
1

O Perl tem uma forma rudimentar de análise de opções integrada. Funciona muito como a opção -v do awk, mas é mais feia

myvar=$(perl -s -e 'print "AAA" x ($j)' -- -j="$i")

Isso passa o $i do shell para o perl como uma variável perl $j . O hífen duplo é necessário para que o -j não seja devorado pelo próprio binário do perl.

    
por 10.12.2015 / 04:35
0

O problema é o tipo de cotação que você está usando. As aspas simples fazem com que a expansão da variável shell não seja feita.

i=5
myvar=$(perl -e "print 'AAA' x ($i)")
echo "$myvar"

Este código funciona como pretendido.

    
por 09.12.2015 / 20:51