您能引用一个随机字符串而不知道它是否包含特殊字符吗?

您能引用一个随机字符串而不知道它是否包含特殊字符吗?

我无法在某些脚本中输入随机生成的密码。

我生成密码,并将其粘贴在“”之间。但有时它包含导致整个系统崩溃的字符,例如“#”或其他字符。

编辑:我被指向引用以寻求解决方案

有几种引用选项(使用\" "' '),但每种选项都需要检查字符串中的特殊字符,例如单引号块中的单引号。有没有办法真正粘贴字符串而无需检查它,或者当您的随机字符串至少可以包含 ' 字符时,是否总是需要进行这种检查。

答案1

您可以使用这里的文件

这种类型的重定向指示 shell 从当前源读取输入,直到看到仅包含分隔符(没有尾随空格)的行。(…)如果单词被引用,分隔符是删除引号的结果单词,并且此处文档中的行不会被扩展。

分隔符(此处为“EOF”)必须出现在一行上以结束此处的文档,并且需要在第一行中引用它,例如

$ cat <<"EOF"
a string \ with ' st$(echo)ra"nge chars?
EOF

给出文字:

a string \ with ' st$(echo)ra"nge chars?

要在脚本中使用该字符串,请调整它以从 stdin 读取并替换cat为上面示例中的脚本路径。

请注意,密码中出现分隔符字符串不是问题,因为分隔符必须单独出现在一行中。唯一不起作用的情况是,如果分隔符与确切地密码字符串,由于大多数密码都有特定的要求(例如“至少一个数字”),因此选择一个根本不符合要求的分隔符应该很容易。可以使用“123456”,这样密码失败预期的

相关内容