微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

参数未正确传递

如何解决参数未正确传递

| 我创建了一个用于加密密码的函数。但是第一个参数不能很好地传递。
crypt_pass \"a\"
输出与as1ѭ相同。我究竟做错了什么?
crypt_pass() {
    echo $(perl -e\'print crypt($1,\"aa\")\')
}
问候, 凯文     

解决方法

如果参数值中包含perl特殊的字符,则将参数嵌入perl脚本中会导致麻烦。最好做类似的事情
crypt_pass() {
    echo $(perl -e \'print crypt($ARGV[0],\"aa\")\' \"$1\")
}
    ,如果没有测试,我的猜测是在
\'
引号内,不会执行任何变量替换,而
$1
会按字面传递。     ,您应该将Perl代码括在双引号中,这样bash可以在将字符串传递给Perl解释器之前替换其ѭ5。
crypt_pass() {
    echo $(perl -e\"print crypt($1,\\\"aa\\\")\")
}
由于在Perl中可以对字符串使用单引号,因此可以通过仅使用单引号来避免转义,因此它将变得更加简洁:
crypt_pass() {
    echo $(perl -e\"print crypt($1,\'aa\')\")
}
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。