【发布时间】:2019-09-30 07:59:53
【问题描述】:
这是基于 MoarVM 版本 2019.03 构建的 Rakudo Star 版本 2019.03.1 实现 Perl 6.d。
Windows 10
例子:
1) 错误:
shell 'mysqldump -uroot -ppassword asppmr > D:\b\29-09-2019 19-45-18\asppmr.sql';
mysqldump: [警告] 在命令行界面使用密码 可能不安全。 mysqldump:找不到表:“19-45-18\asppmr.sql” Proc.new(in => IO::Pipe, out => IO::Pipe, err => IO::Pipe, exitcode => 6、信号=>0、pid=>11928、命令=>("mysqldump -uroot -ppassword asppmr > D:\b\29-09-2019 19-45-18\asppmr.sql",))
2) 错误:
shell 'mysqldump -uroot -ppassword asppmr > "D:\b\29-09-2019 19-45-18\asppmr.sql"';
Синтаксическая ошибка в имени файла, имени папки или метке тома。 Proc.new(in => IO::Pipe, out => IO::Pipe, err => IO::Pipe, exitcode => 1, signal => 0, pid => 19372, command => ("mysqldump - uroot -ppassword asppmr > \"D:\b\29-09-2019 19-45-18\asppmr.sql\"",))
3) 没有错误(当文件路径中没有空格时):
so shell 'mysqldump -uroot -ppassword asppmr > D:\b\asppmr.sql';
是的
4) cmd.exe 没有错误:
mysqldump -uroot -ppassword asppmr > "D:\b\29-09-2019 19-45-18\asppmr.sql"
5) perl 6 没有错误:
my $r = q:x/mysqldump -uroot -ppassword asppmr/;
spurt('D:\b\27-09-2019 18-29-12\asppmr.sql', $r);
6) perl 6 没有错误(如果文件路径中没有引号):
print 'mysql dump: ';
my $d = run 'C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqldump',
'-uroot',
'-ppassword',
'asppmr',
'--result-file=D:\b\29-09-2019 19-45-18\asppmr.sql',
:err;
$d.err.slurp(:close); # skip show errors
say $d.exitcode == 0 ?? 'success!' !! 'error!';
mysql 转储:成功!
解决方案:(感谢 r4ch)
my $fpath = 'D:\b\29-09-2019 19-45-18\asppmr.sql';
$fpath.subst-mutate(' ', '^ ', :g) if $*DISTRO.is-win;
shell "mysqldump -uroot -ppassword asppmr > {$fpath}";
【问题讨论】:
标签: raku