Comportement lorsque le caractère générique (**) est spécifié dans ruby

Caractère générique

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.

Qui le déploiera?

C'est une coquille. Donc, les poissons recevront '** /', mais pas bash. Alors qu'en est-il du rubis?

Deux bonnes manières

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.

spécification

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

Comportement lorsque le caractère générique (**) est spécifié dans ruby
Comportement lorsque chacun est exécuté dans la plage inverse
Encodage lors de l'accès à Windows + Ruby
Soyez prudent lorsque vous omettez le retour dans Ruby
[Note technique] Qu'est-ce que "inclure" dans Ruby?
[Ruby] Votre version de Ruby est 2.6.3, mais votre Gemfile a spécifié 2.5.8
Votre version Ruby est 2.4.6, mais votre Gemfile a spécifié 2.6.4
Ne pas revenir lors de la prise de notes en Ruby
[Ruby] À propos du comportement d'évaluation des expressions conditionnelles dans while
La version ruby est gérée dans le fichier .rbenv / version
Lorsque le projet n'est pas affiché dans eclipse
Lourd en rubis! ??
BUNDLE_APP_CONFIG qui est gênant lors du développement de Ruby avec DevContainer
Mémo de méthode d'acquisition de données lorsqu'il y a HashMap dans HashMap
ORA-08177 lorsque Spring Batch est exécuté en continu dans Oracle
[Ruby] Penser quand il n'y a pas de récepteur devant la méthode (ça ressemble à)