2010-11-28 5 views
1

J'essaie d'apporter une petite modification à un script Ruby afin que je puisse spécifier un emplacement de dossier lors de l'exécution. J'étais à peu près sûr que ce serait une tâche facile, même si je ne suis pas un programmeur Ruby, mais je ne trouve pas la bonne syntaxe.Utiliser une variable avec Dir.glob

puts "Enter folder name and press enter: " 
folder = gets 

files = Dir.glob("folder/[0-100]*.txt"); # What is the correct syntax to use, so the content of the variable folder will be used? 

puts files 

Répondre

1

Pour insérer une variable (ou toute expression rubis) dans une chaîne, vous pouvez utiliser #{}:

Dir.glob("#{folder}/[0-100]*.txt") 

Notez également que la chaîne retournée par gets aura un saut de ligne (\n) au fin, ce qui n'est pas valide dans les noms de dossiers bien sûr. Donc vous devrez utiliser la méthode chomp pour vous en débarrasser.

+0

Si j'écris le nom du dossier directement dans Dir.glob, comme ceci: Dir.glob ("system_logs/[0-100] *. Txt") une liste de tous les fichiers journaux est écrite, mais avec Dir. glob ("# {dossier}/[0-100] *. txt") et le même nom de dossier donné à obtient, rien n'est écrit? – jet8832

+1

@jet: Vous devrez faire 'folder = gets.chomp', sinon' folder' aura une nouvelle ligne à la fin. – sepp2k

+0

Merci, cela a résolu le problème. – jet8832

Questions connexes