Ruby中百分号+管道运算符的含义是什么,如"%|"?

slh*_*hck 8 ruby syntax

我正在尝试理解本网站上提供的脚本:

#!/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的管道.