将混淆后的密码存储在 bash 变量中以便稍后写入文件

Storing obfuscated password in bash variable to write to file later

我目前有一个试图生成新 VNC 密码的脚本。

当我在我的脚本中输入字符串 0987poiu)(*&POIU 时,它会生成 几乎vncpasswd 实用程序相同的输出。这种比较是通过比较生成的两个 ~/.vnc/passwd 文件来完成的。

问题/SSCCE

有区别

my_input='0987poiu)(*&POIU'
test_var=$(echo $my_input | vncpasswd -f)
echo $test_var > /home/test_file_1

my_input='0987poiu)(*&POIU'
echo $my_input | vncpasswd -f > /home/test_file_2

我试过使用 echo $my_input | tr -d '\n' 删除任何换行符,但没有用。我还用 printf 代替了 echo,这也没有用。

将模糊密码存储到变量中并使用 echoprintf 将该变量通过管道传输到文件中是行不通的。

我能够让 echo $my_input | vncpasswd -f > /home/test_file2 匹配 vncpasswd 实用程序生成的 ~/.vnc/passwd 的输出,但这不是所需的操作顺序,我想将 vncpasswd -f 的输出存储到一个变量中,以便稍后在脚本中使用。

$ hexdump test_file_1
00000000 1921 65e6 2aaa 1c20 000a
00000009

$ hexdump test_file_2
00000000 1921 65e6 2aaa 1c09
00000008

两个echo命令都会在您实际想要使用的值中添加一个换行符。请改用 printf。未加引号的参数扩展可能会导致从参数值中删除尾随空格。

my_input='0987poiu)(*&POIU'
test_var=$(printf '%s' "$my_input" | vncpasswd -f)
printf '%s' "$test_var" > /home/test_file_1