0

这就是我要问的:

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

当然,我可以只使用headsed从脚本本身解析,但我不会。

4

3 回答 3

3

vowels设置and时使用单引号避免变量扩展consonants

vowels='$a $e'
consonants='$b $c $d'

否则你就不走运了;扩展发生在分配时,因此在分配后vowels不再consonants有任何对$a, $b, $c,$d或的引用$e

于 2013-08-01T17:29:35.070 回答
1

你不能在脚本本身中做到这一点。vowels除了之外没有文字值achoo eew。该字符串在您分配它的那一刻已被插值,它是该行之后存在的唯一值。

如果这是您的来源,您可以通过 eval 使用间接并修改模式:

> a=123
> b='$a'
> echo $b
$a
> eval 'echo $b'
$a
> eval "echo $b"
123

但这会给你带来很多问题,以防万一有任何额外的引号$b

于 2013-08-01T17:30:12.683 回答
1

在它们周围使用单引号:

vowels='$a $e'
consonants='$b $c $d'
于 2013-08-01T17:30:49.513 回答