将混淆后的密码存储在 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
,这也没有用。
将模糊密码存储到变量中并使用 echo
或 printf
将该变量通过管道传输到文件中是行不通的。
我能够让 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
我目前有一个试图生成新 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
,这也没有用。
将模糊密码存储到变量中并使用 echo
或 printf
将该变量通过管道传输到文件中是行不通的。
我能够让 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