脚本中的特殊字符无法正常工作

时间:2017-08-21 15:43:32

标签: bash

我正在尝试编写一个脚本来更改多个服务器上的密码。问题是密码有特殊字符。这是我正在使用的echo命令的示例:

echo -e "'P#7g$dkW$8Ej$5$%'\n'P#7g$dkW$8Ej$5$%'"

以下是回复:

[root@myserver ~]# echo -e "'P#7g$dkW$8Ej$5$%'\n'P#7g$dkW$8Ej$5$%'"
'P#7gEj$%'
'P#7gEj$%'

正如你所看到的那样,它会丢掉很多角色。任何建议都会有所帮助。

2 个答案:

答案 0 :(得分:0)

您的字符串被解释的原因是您使用双引号来创建字符串。您之后设置的单引号将被解释为字符串的一部分,并且不再具有特殊含义,也不会使您的密码成为文字字符串。这意味着密码字符串仍然在“”范围内,$ xyz将被解释为xyz变量。

你可以试着像这样连接它们

passwd1='password1'
passwd2='password2'
echo -e "$passwd1\n$passwd2"

或者在解决方案中省略双引号。

答案 1 :(得分:0)

取出双引号,只使用单引号,以便不扩展变量(前面有$)。