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ù)為test1test2。

$/測(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論證:三四

科普_1