Perl 系统调用必须同时发送单引号和双引号 ' "
A Perl system call must send exactly both characters single & double quote ' "
Perl 系统调用必须将以下字符串发送到 UnixShell
:
'"XYZ"'
在我的 Perl 脚本中,我使用了以下命令:
system("cleartool mkattr -replace ATTRIBUTE '"$attribute"' lbtype:$label");
一切都很好地传递给 Shell Unix
,除了引号字符的两种使用:
'
的确如此,
cleartool mkattr -replace ATTRIBUTE
上面的命令通过了,这正是我想要的。
Perl 变量 $attribute 和 $label 被很好地解释了。
但我不知道该怎么做才能得到:
'"XYZ"'
这里XYZ
是Perl变量$attribute的值
OS 是 AIX (Unix)
而 Shell
是 ksh
。 cleartool 是 Clearcase 的命令行界面,但是 不需要 Clearcase 技能 来解决我的问题。
参见 "Quote and Quote like Operators" 并使用 qq{...}
:
system(qq{cleartool mkattr -replace ATTRIBUTE '"$attribute"' lbtype:$label});
qq{...}
与 "..."
完全相同,除了您可以在字符串中使用双引号 "
而无需转义 它们。
您可以在 qq
之后直接使用任何字符,然后必须使用相同的字符来表示字符串结尾,即 qqX...X
的工作方式相同。如果您的字符串包含 Xes,您会 运行 遇到问题,所以不要那样做。
您还可以使用 成对的 字符作为分隔符({}
、()
、<>
),这是您通常会看到的。
如果你想执行系统命令并且不必使用任何像重定向这样的shell语法,通常使用system
:[=15的列表形式更好更安全=]
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}
);
从你的问题中不清楚你是想通过 '"XYZ"'
还是 "XYZ"
。
Perl 系统调用必须将以下字符串发送到 UnixShell
:
'"XYZ"'
在我的 Perl 脚本中,我使用了以下命令:
system("cleartool mkattr -replace ATTRIBUTE '"$attribute"' lbtype:$label");
一切都很好地传递给 Shell Unix
,除了引号字符的两种使用:
'
的确如此,
cleartool mkattr -replace ATTRIBUTE
上面的命令通过了,这正是我想要的。 Perl 变量 $attribute 和 $label 被很好地解释了。 但我不知道该怎么做才能得到:
'"XYZ"'
这里XYZ
是Perl变量$attribute的值
OS 是 AIX (Unix)
而 Shell
是 ksh
。 cleartool 是 Clearcase 的命令行界面,但是 不需要 Clearcase 技能 来解决我的问题。
参见 "Quote and Quote like Operators" 并使用 qq{...}
:
system(qq{cleartool mkattr -replace ATTRIBUTE '"$attribute"' lbtype:$label});
qq{...}
与 "..."
完全相同,除了您可以在字符串中使用双引号 "
而无需转义 它们。
您可以在 qq
之后直接使用任何字符,然后必须使用相同的字符来表示字符串结尾,即 qqX...X
的工作方式相同。如果您的字符串包含 Xes,您会 运行 遇到问题,所以不要那样做。
您还可以使用 成对的 字符作为分隔符({}
、()
、<>
),这是您通常会看到的。
如果你想执行系统命令并且不必使用任何像重定向这样的shell语法,通常使用system
:[=15的列表形式更好更安全=]
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}
);
从你的问题中不清楚你是想通过 '"XYZ"'
还是 "XYZ"
。