Bash

如何在 bash 中包含和或評估變數?

  • May 3, 2020

問題:

#!/bin/bash

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

如何$1在我的第 4 行中評估,並且每次通過 perl-oneliner 列印時,列印$1單引號內的評估值?

很多種方法:

  1. 將變數作為輸入傳遞給 perl one liner:
perl -le 'print "\$x is $ARGV[0]"' "$x"
  1. 導出變數,然後使用 perl 的%ENV雜湊來列印它:
export x="$1"
perl -le 'print "\$x is $ENV{x}"' 
  1. 對 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\""

如果我將腳本保存為 aovefoo.sh並使用“foo”作為參數執行它,我會得到:

$ foo.sh foo
Approach #1
$x is foo
Approach #2
$x is foo
Approach #3
$x is foo

引用自:https://unix.stackexchange.com/questions/584043