我正在尝试从Perl中发送OSX命令。但是我很茫然,因为该命令包含引号和反引号,而且我无法弄清楚如何转义这两个字符并获得一个功能系统命令。
这是终端命令:
/usr/bin/osascript -e 'tell application "System Events" to tell process "Terminal" to keystroke "k" using command down'
感谢您的任何见解!
答案 0 :(得分:10)
您可以使用q
quote-like operator,其效果与普通单引号相同(或qq
,相当于双qoute)。这使您可以使用选择的分隔符。
my $cmd = q{/usr/bin/osascript -e 'tell application "System Events" to tell process "Terminal" to keystroke "k" using command down'};
system $cmd;
您还可以将列表传递给system
,将外部程序的每个参数作为列表项。这样您就不必引用由shell解释的参数:
system('/usr/bin/osascript', '-e', 'tell application "System Events" to tell process "Terminal" to keystroke "k" using command down');
答案 1 :(得分:2)
你也提到了反引号。也许你只是单引号(在这种情况下el.pescado的答案是完美的),但如果你在反引号操作符之后,你可能想要使用qx
。以下是等效的:
my @output = qx{/usr/bin/osascript -e 'tell application "System Events" to tell process "Terminal" to keystroke "k" using command down'};
my @output = `/usr/bin/osascript -e 'tell application "System Events" to tell process "Terminal" to keystroke "k" using command down'`