Bash
如何在 bash 中包含和或評估變數?
問題:
#!/bin/bash x=$1 perl -lne 'print "$x is $_"' $1
如何
$1
在我的第 4 行中評估,並且每次通過 perl-oneliner 列印時,列印$1
單引號內的評估值?
很多種方法:
- 將變數作為輸入傳遞給 perl one liner:
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