我正在尝试理解本网站上提供的脚本:
#!/usr/bin/env ruby
require ENV['TM_SUPPORT_PATH'] + '/lib/escape.rb'
def terminal_script_filepath
%|tell application "Terminal"
activate
do script "jsc -i #{e_as(e_sh(ENV['TM_FILEPATH']))}"
end tell|
end
open("|osascript", "w") { |io| io << terminal_script_filepath }
Run Code Online (Sandbox Code Playgroud)
最重要的是,函数terminal_script_filepath开头的部分:
%| …
… |
Run Code Online (Sandbox Code Playgroud)
......以及"解析"的地方:
{ |io| io << terminal_script_filepath }
Run Code Online (Sandbox Code Playgroud)
这里使用了哪些Ruby概念?
我知道open()使用管道可以帮助我将输入提供给进程的STDIN,但是输入是如何terminal_script_filepath进行的io?我也知道了基本的%使用字符串操作,如%w,但到底是什么管道在这里做?
Ser*_*amá 11
这是一个字符串.在ruby中,您可以通过may方式定义字符串.单引号或双引号是最常见的,%s是另一种.您还可以使用此脚本中使用的任何分隔符定义字符串.例如%^Is also a string^,或%$Also a string$.您只需确保不在字符串中使用这些字符.
在<<这种情况下被用作串联操作中,串附加到文件,或在这种情况下,侦听AppleScript的管道.
| 归档时间: |
|
| 查看次数: |
2619 次 |
| 最近记录: |