Verhalten, wenn Platzhalter (**) in Ruby angegeben ist

Platzhalter

Es ist keine große Geschichte, aber ich mache mir ein bisschen Sorgen, also ist es ein Memo.

Der Platzhalter '**' ist nützlich, nicht wahr? Als ich es jedoch an Optionen mit Ruby weitergab, war das Verhalten seltsam.

Wer wird es einsetzen?

Es ist eine Muschel. Fische erhalten also '** /', Bash jedoch nicht. Was ist also mit Rubin?

Zwei richtige Wege

ruby hage.rb */hoge.

Wenn Sie schreiben, wird Fisch es im Voraus erweitern.

p ARGV[0]
p ARGV
> ruby bin/calc_site_ks.rb **/d_ein*.o*
"double_new_model/vol_098/d_ein_098.o22192"
["double_new_model/vol_098/d_ein_098.o22192", "double_new_model/vol_100/d_ein_100_0_24.o22179", "double_new_model/vol_100/d_ein_100_24_44.o22180", "double_new_model/vol_102/d_ein_102.o22194", "double_new_model/vol_104/d_ein_104.o22195"]

ruby hage.rb '*/hoge.'

Wenn Sie schreiben, wird es nicht erweitert.

> ruby bin/calc_site_ks.rb '**/d_ein*.o*'
"**/d_ein*.o*"
["**/d_ein*.o*"]

Erweitern Sie es anschließend mit Dir.glob (ARGV [0]).

Bei normaler Befehlsverwendung wird es nicht in Anführungszeichen gesetzt und so wie es ist erweitert. In diesem Fall ist die Reihenfolge der Optionen wichtig. Seien Sie vorsichtig, wenn Sie optparse oder thor verwenden, aber Sie müssen möglicherweise ein wenig vorsichtig mit dem Befehl sein, den Sie normalerweise verwenden.

Spezifikation

Ruby starten gibt auch die Spezifikationen an. Gemäß

Die im Argument angegebene Zeichenfolge wird als Anfangswert der integrierten Konstante Object :: ARGV festgelegt. In Umgebungen, in denen die Standard-Shell keine Platzhalter erweitert (Win32), erweitert der Ruby-Interpreter die Platzhalter und setzt sie auf Object :: ARGV. In diesem Fall können Sie "*", "?", "[]", "** /" als Platzhalter verwenden. Wenn Sie in der Win32-Umgebung die Platzhaltererweiterung unterdrücken möchten, schließen Sie das Argument in einfache Anführungszeichen (') ein.


Recommended Posts

Verhalten, wenn Platzhalter (**) in Ruby angegeben ist
Verhalten, wenn jedes im umgekehrten Bereich ausgeführt wird
Codierung unter Windows + Ruby
Seien Sie vorsichtig, wenn Sie die Rückkehr in Ruby weglassen
[Technischer Hinweis] Was ist "include" in Ruby?
[Ruby] Ihre Ruby-Version ist 2.6.3, aber Ihre Gemfile hat 2.5.8 angegeben
Ihre Ruby-Version ist 2.4.6, aber Ihre Gemfile hat 2.6.4 angegeben
Kehren Sie nicht zurück, wenn Sie Notizen in Ruby machen
[Ruby] Über das Verhalten der Auswertung von bedingten Ausdrücken in while
Die Ruby-Version wird in der .rbenv / version-Datei verwaltet
Wenn das Projekt nicht in Eclipse angezeigt wird
Schwer in Rubin! ??
BUNDLE_APP_CONFIG, was bei der Entwicklung von Ruby mit DevContainer problematisch ist
Memo zur Datenerfassungsmethode, wenn HashMap in HashMap vorhanden ist
ORA-08177, wenn Spring Batch kontinuierlich in Oracle ausgeführt wird
[Ruby] Denken, wenn sich vor der Methode kein Empfänger befindet (wie es aussieht)