Bash - Perl 脚本变量插入

Bash - Perl 脚本变量插入

我在尝试在 Perl 代码中插入 bash 变量时遇到一些麻烦。该代码的目的是使用 bash 脚本文件在终端中执行特定的 perl 打印命令。我已将问题简化为以下代码:

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

有一个值为 5 的变量 i,我想打印字符串“AAA”与 i 的值一样多的次数,在本例中为 5。为此,我想使用给定的 perl 代码。目前,perl 代码无法读取我的变量 i 中的内容。这很可能是因为“”没有用于我询问 i 值的部分。

切换 ' 和 " 并不是真正的可能性,因为字符串“AAA”将被替换为用于 shellcode 的十六进制代码。使用 $ 执行 perl 代码需要在终端中作为 a 的参数执行。当然,i 的值会在循环中递增/更改,因此我不能只使用 5 代替 i。

有什么帮助可以使 perl 代码能够读取 i 的值或解决注释的这个问题吗?

答案1

使用它来启用变量扩展:

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

答案2

Perl 内置了一种基本形式的选项解析。它的工作方式很像 awk 的-v选项,但它更丑陋

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

它将 shell$i作为 perl 变量传递到 perl 中$j。需要双连字符,以便-j不会被 perl 二进制文件本身吞噬。

答案3

问题在于您使用的引用类型。单引号导致 shell 变量扩展不是待完成。

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

该代码按预期工作。

相关内容