Bash 防止pwgen-y生成反勾号或引号?(或以其他方式净化输出)

Bash 防止pwgen-y生成反勾号或引号?(或以其他方式净化输出),bash,passwords,Bash,Passwords,我在bash脚本中使用pwgen。为了安全起见,我们必须使用-y标志至少包含一个特殊字符。但是,这通常会返回带有一个或多个“或”的密码,这些密码会破坏周围的脚本 我可以阻止生成这些字符吗?如果不能,删除、替换或以其他方式清理pwgen的输出以排除这些字符的最干净的方法是什么 我现在的pwgen是 intPW=$(pwgen -c -n -y -B -1 15) 这意味着intPW的值可以是: iqui`c:ee4so4Ch hph7eew"ohr9Ee 我需要保证每个密码中都有一个符号,而不

我在bash脚本中使用pwgen。为了安全起见,我们必须使用
-y
标志至少包含一个特殊字符。但是,这通常会返回带有一个或多个“或”的密码,这些密码会破坏周围的脚本

我可以阻止生成这些字符吗?如果不能,删除、替换或以其他方式清理pwgen的输出以排除这些字符的最干净的方法是什么

我现在的pwgen是

intPW=$(pwgen -c -n -y -B -1 15)
这意味着intPW的值可以是:

iqui`c:ee4so4Ch
hph7eew"ohr9Ee
我需要保证每个密码中都有一个符号,而不是一个有问题的符号


从if循环到sed,我所能想到的任何替换都会中断,因为我试图以反勾号为目标。

假设您也不需要保护单引号字符,以下内容应该可以:

intPW=$(pwgen -c -n -y -B -1 15 | tr '`"' '$@')

这将转化为`美元和`到'。您可以随意选择您喜欢的任何其他角色

如果您有
pwgen
2.08版,可以使用新选项
-r
排除不需要的字符

pwgen -cnyB1 -r \`\" 15

这完全是我的错误,但不幸的是,在我的测试中,我从来没有看到过一个引用出现……即使他们出现了。在大约40个pwgens之后,我看到了一个这样的臭虫:我能把这个解决方案也应用到单引号中吗?是的,同样的原理也适用。您只需要tr的参数也包含一个引号。当我不是在移动设备上做的时候,我会编辑答案,这样我就不会把它弄糟!多干净的选择啊。谢谢