【发布时间】:2011-04-06 13:54:32
【问题描述】:
我正在尝试编写一个连接到 samba 服务器的 bash 脚本,方法是获取用户名和密码,然后输入 $username:$password@SERVERNAME。
但是,如果密码中包含@,这将失败。有没有办法在bash中将@从密码中转义?
提前致谢
更新: 我正在设置这台网络打印机
lpadmin -p PRINTER -v smb://$username:$password@SERVER -E
它可以工作,除非 $password 中有一个 @ 符号; $username 和 $passwords 变量是通过读取标准输入获得的
【问题讨论】:
-
只是双引号变量
-
我认为问题不在于 bash,而在于让 Samba 识别密码中的哪个“@”以及哪个“@”标记密码的结尾。我怀疑是否有办法做到这一点,但如果有,您将需要查看 Samba 手册以获取信息。 “医生,医生,我这样打自己很痛”?或者,换句话说,不要在密码中使用“@”,因为它会导致悲伤。
-
也许尝试用
%40替换所有@...我认为它不会起作用,但也许就是这样。使用$password=${password//@/%40}替换它们。 -
是的,dreamlax 是个好主意,但是我的 samba 服务器不接受 %40。