参数传递不好
我创建了一个用于加密密码的函数。但是第一个参数没有传递好。 crypt_pass "a"
输出与 crypt_pass "b"
相同。我做错了什么?
crypt_pass() {
echo $(perl -e'print crypt($1, "aa")')
}
问候, 凯文
I created a function for crypting passwords. But the first parameter is not passed through well. crypt_pass "a"
outputs the same as crypt_pass "b"
. What am I doing wrong?
crypt_pass() {
echo $(perl -e'print crypt($1, "aa")')
}
Regards,
Kevin
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
未经测试,我的猜测是在
'
引号内,不执行变量替换,并且$1
按字面意思传递。Without having tested it, my guess would be that inside
'
quotes, no variable substitution is performed, and the$1
is passed literally.如果参数值中存在 Perl 特有的字符,则将参数嵌入到 Perl 脚本中可能会导致麻烦。最好做类似的事情
Embedding the parameter inside a perl script can lead to trouble if there are characters special to perl in the parameter value. Best to do something like
您应该将 Perl 代码括在双引号中,这样 bash 就可以在将字符串传递给 Perl 解释器之前替换它的
$1
。由于在 Perl 中您可以对字符串使用单引号,因此您可以通过仅使用单引号来避免转义,因此它会变得更干净一些:
You should enclose the Perl code in double quotes, this way bash can substitute its
$1
before the string is passed to the Perl interpreter.Since in Perl you can use single quotes for a string, you can avoid the escaping by just using single quotes, so it would become a bit cleaner: