在perl命令中使用bash中的变量

时间:2016-07-28 17:27:14

标签: bash ssh quoting

我似乎无法理解为什么$crypt在这里为空

#!/bin/bash
pass=$(pwgen -1 -n 8)
salt=$(pwgen -1 -n 5) 
crypt=$(perl -le 'print crypt($pass, $salt)')
user=deluge_$(pwgen -s 5 1)
echo crypt: $crypt # no output
echo pass: $pass #work
echo salt : $salt #work
echo $(perl -le 'print crypt($pass, $salt)') # no output

perl -le 'print crypt(Ab3choot, Oa3ah)' # works

1 个答案:

答案 0 :(得分:0)

bash中,当放入单引号内时,变量不会被展开,而是使用双引号:

crypt=$(perl -le "print crypt("$pass", "$salt")")

现在应该扩展bash个变量,$pass$salt

同样几乎总是,引用变量以避免单词拆分和文件名扩展是个好主意。