我正在尝试准备网址,其中电子邮件地址将是base64编码的。但是,当我使用base64对电子邮件进行编码时,它返回emptry字符串,没有base64编码,这样可以正常工作,我在这里缺少什么?
这里是没有base64编码的shell脚本
#!/bin/bash
link='unsubscribe'
testVar="$link/""me@domain.com"
echo "www.somedomain.com/$testVar/email/"
输出:
www.somedomain.com/unsubscribe/me@domain/email/
我正在尝试使用base64编码电子邮件,如下所示:
#!/bin/bash
link='unsubscribe'
testVar="$link/""me@domain.com"|base64
echo "www.somedomain.com/$testVar/email/"
输出
www.somedomain.com/unsubscribe//email/
请注意,电子邮件未被编码,返回空值
我在这里缺少什么?
答案 0 :(得分:3)
您不是将<{1}}中包含的字符串传递给test
命令,使用Command substitution $(..)语法将没有换行符的字符串传递给命令,使用base64
printf
生成输出
#!/usr/bin/bash
link='unsubscribe'
test=$(printf "%s" "$link/""me@domain.com" | base64)
echo "www.somedomain.com/${test}/email/"
与您的实际问题无关,但我认为作为一般编码指南,您应该不将变量命名为www.somedomain.com/dW5zdWJzY3JpYmUvbWVAZG9tYWluLmNvbQ==/email/
,因为这很容易与{{3}混淆}。如果您可以为变量的用途添加更多上下文,可能会很好,可能是test
,testVar
或testStr
。