在 bash 的 perl 命令中使用变量

Using variables in perl command with bash

我似乎不明白为什么 $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

bash中,单引号内的变量不会展开,改用双引号:

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

现在 bash 变量 $pass$salt 应该按预期展开。

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