以下是我的要求:
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
来解析脚本本身,但我不会。
答案 0 :(得分:3)
在设置vowels
和consonants
时使用单引号来避免变量扩展:
vowels='$a $e'
consonants='$b $c $d'
否则你运气不好;扩展发生在分配时,vowels
和consonants
不再引用$a
,$b
,$c
,$d
,或者$e
在分配后再进行。
答案 1 :(得分:1)
你不能在脚本本身那样做。除vowels
之外,achoo eew
没有字面值。字符串在您指定字符串时已经插值,它是该行之后唯一存在的值。
如果这是您的来源,您可以通过eval使用间接并修改模式:
> a=123
> b='$a'
> echo $b
$a
> eval 'echo $b'
$a
> eval "echo $b"
123
但如果$b
答案 2 :(得分:1)
在它们周围使用单引号:
vowels='$a $e'
consonants='$b $c $d'