Perl 系统调用必须准确发送单引号和双引号 ' " 这两个字符

2024-01-16

Perl 系统调用必须将以下字符串发送到UnixShell:

'"XYZ"'

在我的 Perl 脚本中,我使用了以下命令:

system("cleartool mkattr -replace ATTRIBUTE '"$attribute"' lbtype:$label");

一切都很好地传递给Shell Unix,除了引号字符的两种使用:

'

Indeed,

cleartool mkattr -replace ATTRIBUTE

上面的命令已通过,因为它正是我想要的。 Perl 变量 $attribute 和 $label 得到了很好的解释。 但我不知道该怎么做才能准确获得:

'"XYZ"'

Here XYZ是 Perl 变量 $attribute 的值 操作系统是AIX (Unix) and Shell is ksh。 cleartool 是 Clearcase 的命令行界面,但是不需要 Clearcase 技能解决我的问题。


如果您想执行系统命令并且不必使用任何 shell 语法(例如重定向),那么使用列表形式通常更好、更安全system:

system(
    'cleartool',  'mkattr', '-replace', 'ATTRIBUTE',
    qq{"$attribute"}, qq{lbtype:$label}
);
# or, if you really want to pass both types of quotes:
system(
    'cleartool',  'mkattr', '-replace', 'ATTRIBUTE',
    qq{'"$attribute"'}, qq{lbtype:$label}
);

See perldoc -f 系统 https://perldoc.perl.org/functions/system.html

从你的问题来看并不清楚你是否想通过'"XYZ"' or "XYZ".

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Perl 系统调用必须准确发送单引号和双引号 ' " 这两个字符 的相关文章

随机推荐