Ksh脚本使用Perl一行程序解码base64

Ksh脚本使用Perl一行程序解码base64,perl,ksh,Perl,Ksh,使用类似于/decodetest.sh“ZW5jb2RlIG1lCg==”的脚本尝试解码“ZW5jb2RlIG1lCg==”不会返回任何内容。我正在传递带单引号的base64字符串,以保留命令的双引号。任何帮助或其他选择都将受到感谢 #!/bin/ksh OBJECT=$1 perl -MMIME::Base64 -e 'print decode_base64(${OBJECT})' #echo ${OBJECT} 在下面的命令行上正确运行输出“encodeme” 与其尝试使用嵌套引号,不如

使用类似于
/decodetest.sh“ZW5jb2RlIG1lCg==”
的脚本尝试解码
“ZW5jb2RlIG1lCg==”
不会返回任何内容。我正在传递带单引号的base64字符串,以保留命令的双引号。任何帮助或其他选择都将受到感谢

#!/bin/ksh 
OBJECT=$1
perl -MMIME::Base64 -e 'print decode_base64(${OBJECT})'
#echo ${OBJECT}
在下面的命令行上正确运行输出“encodeme”


与其尝试使用嵌套引号,不如将参数作为参数传递:

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

与其尝试使用嵌套引号,不如将参数作为参数传递:

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

Shell环境变量在Perl中可以通过

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

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


Shell环境变量在Perl中可以通过

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

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


甚至更好。我根本不必担心引用输入。谢谢或者直接传递
$1
,而不是分配给
对象
,然后传递副本。虽然这是一段很长的代码,但分配给另一个变量以使其自文档化是有意义的,甚至更好。我根本不必担心引用输入。谢谢或者直接传递
$1
,而不是分配给
对象
,然后传递副本。尽管这是一段很长的代码,但将其分配给另一个变量以使其自文档化是有意义的。
export OBJECT=$1
perl -MMIME::Base64 -e 'print decode_base64($ENV{OBJECT})'