?
? ????? PHP ??? ???? ??? ?? ??
請(qǐng)使用如下命令行啟動(dòng)Ruby解釋器.
ruby [ option ...] [ -- ] [ programfile ] [ argument ...]
這里的"option"指下文將要提到的命令行選項(xiàng)中的一個(gè)。"--"則顯式地表明選項(xiàng)字符串到此結(jié)束。"programfile"是裝載Ruby腳本的文件。若省略不寫(xiě)或者寫(xiě)成"-"時(shí),Ruby會(huì)把標(biāo)準(zhǔn)輸入當(dāng)做Ruby腳本進(jìn)行處理。
programfile若以“#!”開(kāi)始,則進(jìn)行特殊的處理。詳細(xì)情況請(qǐng)參考下文的關(guān)于解釋器行。
argument中的字符串將變成內(nèi)部常數(shù)ARGV的初始值。在有的環(huán)境中(Win32),標(biāo)準(zhǔn)shell不會(huì)展開(kāi)通配符,這時(shí)Ruby解釋器將自行展開(kāi)通配符然后賦值給ARGV。此時(shí),可使用的通配符有“*”、“?”、“[]”和“**/”(與Dir.glob不同,這里不能使用“{..}”)。在Win32環(huán)境中,若不想展開(kāi)通配符的話,請(qǐng)使用單引號(hào)(')將參數(shù)括起來(lái)。
Ruby解釋器可接受下列命令行選項(xiàng)?;旧吓cPerl的類(lèi)似。
以8進(jìn)制數(shù)指定輸入記錄分隔符('$/')。
若不指定數(shù)字的話,分隔符是空字符(等同于$/="\0")。數(shù)字后面可以有其他的開(kāi)關(guān)(switch)。
-00代表段落模式(等同于$/=""),-0777(因?yàn)檫@個(gè)代碼不代表任何文字)表示將文件的全部?jī)?nèi)容一次性讀入(相當(dāng)于$/=nil)。
與'-n'或'-p'一起使用時(shí),可以打開(kāi)自動(dòng)拆分模式(auto split mode)。自動(dòng)拆分模式將在各個(gè)循環(huán)前執(zhí)行以下動(dòng)作。
$F = $_.split
若沒(méi)有同時(shí)指定'-n'或'-p'選項(xiàng)的話將不起作用。
執(zhí)行腳本之前,先移動(dòng)到指定目錄。
只對(duì)腳本進(jìn)行編譯,而并不執(zhí)行。編譯后若沒(méi)發(fā)現(xiàn)語(yǔ)法錯(cuò)誤,則顯示“Syntax OK”。
顯示版權(quán)信息。
指定Ruby要處理的漢字編碼。若是'E'或'e',則Ruby認(rèn)定字符串或訪問(wèn)文件中的漢字編碼為EUC。同樣,若是'S'或's'的話則認(rèn)定為SJIS。若是'U'或'u'則當(dāng)作UTF-8處理。'N'表示不對(duì)漢字進(jìn)行處理。該選項(xiàng)的默認(rèn)值就是N(NONE)。
將來(lái)有可能會(huì)改變文字編碼處理方式,屆時(shí)該選項(xiàng)的內(nèi)容也會(huì)有所變化。
-d
--debug
以調(diào)試模式執(zhí)行腳本。將$DEBUG設(shè)置成true。
-e script
在命令行中指定腳本。添加-e選項(xiàng)后,就不會(huì)從參數(shù)中抽取腳本文件名了。
若多次使用-e選項(xiàng)時(shí),系統(tǒng)會(huì)按照以下方式處理。
下列各表達(dá)式的意義相同。 ruby -e "5.times do |i|" -e "puts i" -e "end" ruby -e "5.times do |i| puts i end" ruby -e "5.times do |i|; puts i; end"
-Fregexp
將regexp指定給輸入域分隔符(field separator)。
-h
--help
顯示命令行選項(xiàng)的簡(jiǎn)介。
-i[extension]
對(duì)參數(shù)中指定的文件內(nèi)容進(jìn)行替換(in-place edit)。原始文件將被加上擴(kuò)展名并保存下來(lái)。若沒(méi)有擴(kuò)展名的話,將不會(huì)進(jìn)行備份,而且只有替換后的文件會(huì)被保留下來(lái)。
例:
% echo matz > /tmp/junk % cat /tmp/junk matz % ruby -p -i.bak -e '$_.upcase!' /tmp/junk % cat /tmp/junk MATZ % cat /tmp/junk.bak matz
-I directory
指定(追加)加載文件的路徑。指定的目錄將被追加到Ruby的數(shù)組變量($:)中。
-l
進(jìn)行行尾自動(dòng)處理。首先,將$\改為$/的值,在print輸出時(shí)添加換行。若使用了-n標(biāo)志或-p標(biāo)志的話,將對(duì)gets讀入的各行末尾進(jìn)行String#chop!處理。
-n
若使用了該標(biāo)志,則整個(gè)程序會(huì)像sed -n或awk一樣,被
while gets ... end
括起來(lái)運(yùn)行。
-p
與-n標(biāo)志相仿,在各循環(huán)后輸出變量$_的值。
例:
% echo matz | ruby -p -e '$_.tr! "a-z", "A-Z"' MATZ
-r feature
執(zhí)行腳本前,先對(duì)feature指定的庫(kù)執(zhí)行require操作。與'-n'選項(xiàng)、'-p'選項(xiàng)一起使用時(shí)特別奏效。
-s
對(duì)跟在腳本名后并且以'-'開(kāi)頭的參數(shù)進(jìn)行解釋,并將其值賦值給同名的全局變量。遇到以'--'開(kāi)頭的參數(shù)就停止解釋,并將該參數(shù)從ARGV中刪除。
例:
#! /usr/local/bin/ruby -s # prints "true" if invoked with `-xyz' switch. print "true\n" if $xyz
-S
該選項(xiàng)表明,當(dāng)腳本名不是以'/'開(kāi)頭的時(shí)候,要使用環(huán)境變量PATH的值搜索腳本。若您的機(jī)器不支持#!的話,可以使用下列方法模擬#!的運(yùn)行:
#!/bin/sh exec ruby -S -x $0 "$@" #! ruby
因?yàn)榈?行的關(guān)系,系統(tǒng)把腳本交給/bin/sh。/bin/sh執(zhí)行第2行后啟動(dòng)Ruby解釋器。在-x選項(xiàng)的作用下,Ruby解釋器把從'#!'到包含'ruby'的行的內(nèi)容全部讀入。
根據(jù)系統(tǒng)的不同,$0未必包含完整路徑,因此有必要使用'-S'選項(xiàng)來(lái)告訴Ruby在必要時(shí)搜索腳本。
-T[level]
執(zhí)行不純度測(cè)試。若給level指定了一個(gè)值之后,安全等級(jí)也會(huì)使用這個(gè)值。省略level時(shí),其值為1。對(duì)于CGI程序來(lái)說(shuō),將其指定為-T1比較合適。$SAFE的等級(jí)也將被設(shè)定。
-v
--verbose
冗長(zhǎng)模式。啟動(dòng)時(shí)顯示版本信息,然后將內(nèi)部變量$VERBOSE設(shè)為true。當(dāng)此變量為true時(shí),眾多的方法在運(yùn)行時(shí)會(huì)顯示冗長(zhǎng)的信息。若只設(shè)定'-v'選項(xiàng),而沒(méi)有其他參數(shù)時(shí),啟動(dòng)后會(huì)先顯示版本信息,然后就結(jié)束運(yùn)行(不會(huì)等待來(lái)自標(biāo)準(zhǔn)輸入的腳本)。
--version
顯示Ruby的版本信息。
-w
不顯示版本信息的冗長(zhǎng)模式。
-W[level]
ruby 1.8 特性
可以指定3種級(jí)別的冗長(zhǎng)模式,如下所示。
內(nèi)部變量$VERBOSE被分別設(shè)置為nil,false,true。
-x[directory]
從message中取出腳本并執(zhí)行。讀入腳本的范圍是從'#!'開(kāi)始,直到包含'ruby'的行為止。用EOF(文件結(jié)束),^D(controlD),^Z(controlZ)或保留字_END_來(lái)指定腳本結(jié)束。
若指定了目錄名的話,則在執(zhí)行腳本前移動(dòng)到該指定目錄。
-y
--yydebug
編譯器調(diào)試模式。編譯腳本時(shí)顯示語(yǔ)法分析的過(guò)程。該顯示過(guò)程會(huì)很漫長(zhǎng),可能只對(duì)那些想調(diào)試編譯器的人有用。
命令行指定的腳本是以'#!'開(kāi)頭的文件,當(dāng)該行中不包含'ruby'時(shí),將替代OS把'#!'后面的字符串看成命令行,然后啟動(dòng)解釋器。
例如,用Ruby運(yùn)行下面的shell腳本時(shí)將啟動(dòng)sh。
#!/bin/sh -vx echo "$@"
若此行中包含'ruby'的話,則'ruby'左側(cè)的部分將被忽略,右側(cè)以'-'開(kāi)頭的部分被視為選項(xiàng)。
這里指定的選項(xiàng)將被追加到以命令行方式指定的選項(xiàng)之中。這主要是為了嵌入那些本該在腳本中指定的選項(xiàng)。例如,下面腳本的作用等價(jià)于使用命令行方式指定-Ke選項(xiàng)。
#! ruby -Ke