在 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
应该按预期展开。
几乎总是,引用变量以避免分词和文件名扩展是个好主意。
我似乎不明白为什么 $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
应该按预期展开。
几乎总是,引用变量以避免分词和文件名扩展是个好主意。