gpt4 book ai didi

raku - 如何在shell函数中转义引号?

转载 作者:行者123 更新时间:2023-12-04 18:55:27 25 4
gpt4 key购买 nike

这是 Rakudo Star 版本 2019.03.1,基于 MoarVM 版本 2019.03
实现 Perl 6.d。

视窗 10

例子:

1) 错误:

shell 'mysqldump -uroot -ppassword asppmr > D:\b\29-09-2019 19-45-18\asppmr.sql';

mysqldump: [Warning] Using a password on the command line interface can be insecure. mysqldump: Couldn't find table: "19-45-18\asppmr.sql" Proc.new(in => IO::Pipe, out => IO::Pipe, err => IO::Pipe, exitcode => 6, signal => 0, pid => 11928, command => ("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';

True



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 dump: success!



解决方案: (感谢 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}";

最佳答案

您可以尝试使用 ^ 转义文件路径中的空间正如 How to escape space in file path in windows run? 中所建议的

关于raku - 如何在shell函数中转义引号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58163721/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com