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.
Es ist eine Muschel. Fische erhalten also '** /', Bash jedoch nicht. Was ist also mit Rubin?
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.
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