【发布时间】:2015-06-03 21:17:18
【问题描述】:
我正在更新旧版 Perl 脚本。它非常简单,因为它设置了一些变量,然后调用 bash 命令。问题是我传递的密码中有 2 个感叹号。这些似乎被翻译错了。假设我有这个脚本:
$source_db_ip = "1.2.3.4"; # carl dev/qa
$source_user = 'user1';
$source_password = "password!!";
$destination_db_ip = "5.6.7.8";
$destination_user = "user2";
$destination_password = "password2!!";
my $status = `pt-table-sync h=$source_db_ip,p='${source_password}',u=$source_user,D=db_name,t=table_name h=$destination_db_ip,p='$destination_password',u='$destination_user',D=db_name,t=table_name`;
这一直失败。我知道凭据是正确的,因为我已经手动检查了它们。那么如何正确转义密码以便正确翻译呢?
【问题讨论】:
-
顺便说一句,反引号需要
sh命令,而不是bash命令。 -
顺便说一句,机器上的任何人都可以看到命令行,所以在命令行中包含密码是个坏主意。
标签: bash perl passwords escaping quotes