module Shellwords

要約

UNIX Bourne シェルの単語分割規則に従った文字列分割と文字列エスケープを行うモジュールです。

Shellwords モジュールは、空白区切りの単語分割を行う shellsplit、文字列をエスケープする shellescape、文字列エスケープを文字列リストに対して適用する shelljoin の3つのモジュール関数を提供します。

これらのメソッドの別名として、Shellwords.split, Shellwords.escape, Shellwords.join も使用可能です。ただし、これらの短縮形式のメソッドはクラスメソッドとしてのみ定義されるため、関数形式の呼び出しはできません。

目次

特異メソッド
モジュール関数

特異メソッド

escape(str) -> String[permalink][rdoc]

文字列を Bourne シェルのコマンドライン中で安全に使えるようにエスケープします。

このメソッドは、Shellwords.#shellescape の別名です。

[PARAM] str:
エスケープの対象となる文字列を指定します。
[RETURN]
エスケープされた文字列を返します。
join(array) -> String[permalink][rdoc]

配列の各要素である文字列に対して、Bourne シェルのコマンドライン中で安全に使えるためのエスケープを適用し、空白文字を介してそれらを連結したコマンドライン文字列を生成します。

このメソッドは、Shellwords.#shelljoin の別名です。

[PARAM] array:
エスケープ対象の文字列を要素とする配列を指定します。
[RETURN]
エスケープ結果を連結した文字列を返します。
split(line) -> [String][permalink][rdoc]

Bourne シェルの単語分割規則に従った空白区切りの単語分割を行い、単語 (文字列) の配列を返します。

このメソッドは、Shellwords.#shellsplit の別名です。

[PARAM] line:
分割の対象となる文字列を指定します。
[RETURN]
分割結果の各文字列を要素とする配列を返します。
[EXCEPTION] ArgumentError:
引数の中に対でないシングルクォートまたはダブルクォートが現れた場合に発生します。

モジュール関数

shellescape(str) -> String[permalink][rdoc]

文字列を Bourne シェルのコマンドライン中で安全に使えるようにエスケープします。

[PARAM] str:
エスケープの対象となる文字列を指定します。
[RETURN]
エスケープされた文字列を返します。

例:

require 'shellwords'

pattern = 'Jan 15'
puts "grep #{Shellwords.shellescape(pattern)} file"
# => grep Jan\ 15 file
shelljoin(array) -> String[permalink][rdoc]

配列の各要素である文字列に対して、Bourne シェルのコマンドライン中で安全に使えるためのエスケープを適用し、空白文字を介してそれらを連結したコマンドライン文字列を生成します。

個々の配列要素に対するエスケープには、Shellwords.#shellescape と同じ規則が適用されます。

[PARAM] array:
エスケープ対象の文字列を要素とする配列を指定します。
[RETURN]
エスケープ結果を連結した文字列を返します。

例:

require 'shellwords'

pattern = 'Jan 15'
file = 'file name with spaces'
puts Shellwords.shelljoin(['grep', pattern, file])
# => grep Jan\ 15 file\ name\ with\ spaces
shellsplit(line) -> [String][permalink][rdoc]
shellwords(line) -> [String]

Bourne シェルの単語分割規則に従った空白区切りの単語分割を行い、単語 (文字列) の配列を返します。

空白、シングルクォート (')、ダブルクォート (")、バックスラッシュ (\) を解釈します。

[PARAM] line:
分割の対象となる文字列を指定します。
[RETURN]
分割結果の各文字列を要素とする配列を返します。
[EXCEPTION] ArgumentError:
引数の中に対でないシングルクォートまたはダブルクォートが現れた場合に発生します。

例:

require 'shellwords'

p Shellwords.shellwords(%q{  foo bar "foo bar"\ baz 'foo bar'  })
# => ["foo", "bar", "foo bar baz", "foo bar"]

p Shellwords.shellwords(%q{  A B C "D E F" "G","H I"  })
# => ["A", "B", "C", "D E F", "G,H I"]