如何在 bash 中包含和/或评估变量?

如何在 bash 中包含和/或评估变量?

问题:

#!/bin/bash

x=$1
perl -lne 'print "$x is $_"' $1

如何$1在我的第 4 行中进行评估,并且每次通过 perl-oneliner 打印时,打印$1单引号内的评估值?

答案1

很多方法:

  1. 将变量作为输入传递给 perl oneliner:

    perl -le 'print "\$x is $ARGV[0]"' "$x"
    
  2. 导出变量,然后使用 perl 的%ENV哈希来打印它:

    export x="$1"
    perl -le 'print "\$x is $ENV{x}"' 
    
  3. 对 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

相关内容