Ruby中的命令行參數(shù)
許多紅寶石腳本沒(méi)有文本或圖形界面。他們只需跑步,完成工作,然后退出。要與這些腳本進(jìn)行通信以更改其行為,必須使用命令行參數(shù)。
命令行是UNIX命令的標(biāo)準(zhǔn)操作模式,由于Ruby廣泛用于UNIX和類(lèi)似UNIX的系統(tǒng)(如Linux和macOS),因此遇到這種類(lèi)型的程序是非常標(biāo)準(zhǔn)的。
如何提供命令行參數(shù)
Ruby腳本參數(shù)由shell傳遞給Ruby程序,該程序接受終端上的命令(如bash)。
在命令行中,腳本名稱(chēng)后面的任何文本都被視為命令行參數(shù)。用空格分隔,每個(gè)單詞或字符串將作為單獨(dú)的參數(shù)傳遞給Ruby程序。
以下示例顯示了用于啟動(dòng)的正確語(yǔ)法測(cè)試來(lái)自命令行的Ruby腳本,參數(shù)為test1和test2。
$/測(cè)試test1 test2高溫防暑小常識(shí)
您可能會(huì)遇到需要將參數(shù)傳遞給Ruby程序但命令中有空格的情況。起初似乎是不可能的,因?yàn)闅づ茖⒂嘘P(guān)空間的爭(zhēng)論分開(kāi),但有一個(gè)規(guī)定。
任何雙引號(hào)的論點(diǎn)都不會(huì)分開(kāi)。在將其傳遞給Ruby程序之前,外殼會(huì)刪除雙引號(hào)。
以下示例將單個(gè)參數(shù)傳遞給測(cè)試Ruby腳本,test1 test2:
$/測(cè)試"test1 test2"
如何使用命令行參數(shù)
在您的Ruby程序中,您可以訪問(wèn)shell使用ARGV特殊變量傳遞的任何命令行參數(shù)。ARGV是一個(gè)數(shù)組變量,它以字符串形式保存shell傳遞的每個(gè)參數(shù)。
該程序迭代ARGV數(shù)組并打印出其內(nèi)容:
#!/usr/bin/env紅寶石ARGV.each做| a|puts"參數(shù):#{a}"結(jié)束
以下是啟動(dòng)此腳本的bash會(huì)話的摘錄(保存為文件測(cè)試)有各種論點(diǎn):
$/測(cè)試test1 test2"三-四"參數(shù):test1參數(shù):test2論證:三四