这就是我要问的:
a="achoo"
b="bah"
c="clap"
d="dong"
e="eew"
vowels="$a $e"
consonants="$b $c $d"
echo $vowels
输出achoo eew
,但有时我想要$a $e
echo $consonants
输出bah clap dong
,但有时我想要$b $c $d
当然,我可以只使用head
或sed
从脚本本身解析,但我不会。
vowels
设置and时使用单引号避免变量扩展consonants
:
vowels='$a $e'
consonants='$b $c $d'
否则你就不走运了;扩展发生在分配时,因此在分配后vowels
不再consonants
有任何对$a
, $b
, $c
,$d
或的引用$e
。
你不能在脚本本身中做到这一点。vowels
除了之外没有文字值achoo eew
。该字符串在您分配它的那一刻已被插值,它是该行之后存在的唯一值。
如果这是您的来源,您可以通过 eval 使用间接并修改模式:
> a=123
> b='$a'
> echo $b
$a
> eval 'echo $b'
$a
> eval "echo $b"
123
但这会给你带来很多问题,以防万一有任何额外的引号$b
在它们周围使用单引号:
vowels='$a $e'
consonants='$b $c $d'