问题:
#!/bin/bash
x=$1
perl -lne 'print "$x is $_"' $1
如何$1
在我的第 4 行中进行评估,并且每次通过 perl-oneliner 打印时,打印$1
单引号内的评估值?
答案1
很多方法:
将变量作为输入传递给 perl oneliner:
perl -le 'print "\$x is $ARGV[0]"' "$x"
导出变量,然后使用 perl 的
%ENV
哈希来打印它:export x="$1" perl -le 'print "\$x is $ENV{x}"'
对 perl 脚本使用双引号:
perl -le "print \"\\\$x is $x\""
它们在 shell 脚本中的样子如下:
#!/bin/bash
export x=$1
echo "Approach #1"
perl -le 'print "\$x is $ARGV[0]"' "$x"
echo "Approach #2"
perl -le 'print "\$x is $ENV{x}"'
echo "Approach #3"
perl -le "print \"\\\$x is $x\""
如果我将脚本 aove 保存为foo.sh
并使用“foo”作为参数运行它,我得到:
$ foo.sh foo
Approach #1
$x is foo
Approach #2
$x is foo
Approach #3
$x is foo