Ce n'est pas une grande histoire, mais je suis un peu inquiet, donc c'est un mémo.
Le caractère générique «**» est utile, n'est-ce pas? Cependant, quand je l'ai passé aux options avec ruby, le comportement était étrange.
C'est une coquille. Donc, les poissons recevront '** /', mais pas bash. Alors qu'en est-il du rubis?
ruby hage.rb */hoge.
Lorsque vous écrivez, le poisson l'élargira à l'avance.
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.'
Si vous écrivez, il ne se développera pas.
> ruby bin/calc_site_ks.rb '**/d_ein*.o*'
"**/d_ein*.o*"
["**/d_ein*.o*"]
Donc, après cela, développez-le avec Dir.glob (ARGV [0]).
Dans l'utilisation normale des commandes, il n'est pas entouré de guillemets et est développé tel quel. Dans ce cas, l'ordre des options est important. Soyez prudent si vous utilisez optparse ou thor, mais vous devrez peut-être être un peu prudent avec la commande que vous utilisez habituellement.
Start ruby spécifie également les spécifications. Dit,
La chaîne spécifiée dans l'argument est définie comme valeur initiale de la constante intégrée Object :: ARGV. Dans un environnement où le shell standard ne développe pas les caractères génériques (Win32), l'interpréteur Ruby développe les caractères génériques et le définit sur Object :: ARGV. Dans ce cas, vous pouvez utiliser
* ',
?',[] ',
** /' comme caractères génériques. Dans l'environnement Win32, si vous souhaitez supprimer l'expansion des caractères génériques, placez l'argument entre guillemets simples (').
Recommended Posts