Ksh脚本使用Perl one-liner解码base64

时间:2017-05-19 19:35:43

标签: perl ksh

尝试使用"ZW5jb2RlIG1lCg=="这样的脚本解码./decodetest.sh '"ZW5jb2RlIG1lCg=="'并不会返回任何内容。我用单引号传递base64字符串以保留命令的双引号。任何帮助表示赞赏或任何其他选择。

#!/bin/ksh 
OBJECT=$1
perl -MMIME::Base64 -e 'print decode_base64(${OBJECT})'
#echo ${OBJECT}

在命令行下面运行正确输出"编码我"。

perl -MMIME::Base64 -e 'print decode_base64("ZW5jb2RlIG1lCg==")'

2 个答案:

答案 0 :(得分:3)

不是试图使嵌套引号起作用,而是将参数作为参数传递更为清晰:

#!/bin/ksh
OBJECT=$1
perl -MMIME::Base64 -e 'print decode_base64($ARGV[0])' "$OBJECT"

答案 1 :(得分:2)

可以通过%ENV hash

在Perl中访问Shell环境变量
perl -MMIME::Base64 -e 'print decode_base64($ENV{OBJECT})'

您可能需要在ksh中的变量上调用export,以便子壳可以看到它。

OBJECT=$1
export OBJECT
perl -MMIME::Base64 -e 'print decode_base64($ENV{OBJECT})'

export OBJECT=$1
perl -MMIME::Base64 -e 'print decode_base64($ENV{OBJECT})'