Snabbguide till kommandoradsargument i Ruby

click fraud protection

Många Rubin skript har ingen text eller grafiska gränssnitt. De springer helt enkelt, gör sitt jobb och lämnar sedan. För att kommunicera med dessa skript för att ändra sitt beteende måste kommandoradsargument användas.

Kommandoraden är standardläget för UNIX-kommandon, och eftersom Ruby används mycket på UNIX och UNIX-liknande system (som Linux och macOS), det är ganska standard att möta den här typen av program.

Hur man tillhandahåller kommandoradsargument

Ruby-skriptargument överförs till Ruby-programmet av skalet, det program som accepterar kommandon (som bash) på terminalen.

På kommandoraden betraktas all text som följer skriptets namn som ett kommandoradsargument. Separat med mellanslag kommer varje ord eller sträng att skickas som ett separat argument till Ruby-programmet.

Följande exempel visar rätt syntax som ska användas för att starta test.rb Rubinskript från en kommandorad med argumenten test1 och test2.

$ ./test.rb test1 test2

Du kan stöta på en situation där du behöver överföra ett argument till ett Ruby-program men det finns ett utrymme i kommandot. Det verkar omöjligt från början, eftersom skalet skiljer argument på mellanslag, men det finns en bestämmelse för detta.

instagram viewer

Alla argument i dubbla citat kommer inte att separeras. De dubbla citaten tas bort av skalet innan de överförs till Ruby-programmet.

Följande exempel överför ett enda argument till test.rb Ruby manus, test1 test2:

$ ./test.rb "test1 test2"

Hur man använder kommandoradsargument

I dina Ruby-program kan du komma åt alla kommandoradsargument som skickas av skalet med argv specialvariabel. argv är en Array-variabel som innehåller som strängar varje argument som passeras av skalet.

Detta program upprepas över argvarray och skriver ut dess innehåll:

#! / usr / bin / env ruby. ARGV.each do | a | sätter "Argument: # {a}" slutet

Följande är ett utdrag från en bash-session där skriptet startas (sparas som filen test.rb) med olika argument:

$ ./test.rb test1 test2 "tre fyra" Argument: test1. Argument: test2. Argument: tre fyra
instagram story viewer