Bash - 命令行上的特殊字符

时间:2015-11-18 18:42:06

标签: bash

我正在编写一个BASH脚本,如果没有提供参数,则会生成密码,并在提供一个参数时验证密码是否符合指定的要求。其中一个要求是在密码中使用特殊字符。

但是,我遇到了三个遇到问题的情况。

1) $ - $之后的所有内容都被解释为变量名称。如果$位于密码的末尾,它就可以工作。假设没有提供参数并生成密码。

foo $ABC123abc
Valid password is X2Q$fsc2Bx

foo ABC123abc$
ABC123abc$ is a valid password

2) - 如果放在参数的开头,其余部分会被注释掉。生成密码,因为它假定没有提供参数。

foo #ABC123abc
Valid password is *vhkJT2j

foo  ABC1#23abc
ABC1#23abc is a valid password

3)& - 在后台运行并仅评估&之前的内容。字符。

foo ABC1&23abc
ABC1 is not a valid password

我意识到如果我逃避或单引用这个论点,一切都会有效:

foo '$ABC123abc'
$ABC123abc is a valid password

foo '#ABC123abc'
#ABC123abc is a valid password

foo 'ABC1&23abc'
ABC1&23abc is a valid password

但是,我已经被告知,可以在不使用单引号或字符转义的情况下使其正常运行,所有这些都在脚本的范围内。我想知道这样的解决方案是否可行,或者我是否正在疯狂追逐。

感谢您的帮助!

0 个答案:

没有答案