2012-04-28 9 views
5

Szukałem skryptu Rubiego i natrafiłem na script = $0. Zrobiłem trochę Googling, ale nie znalazłem jednoznacznej odpowiedzi na pytanie, co to robi. Uważam, że chroni przed odczytaniem pliku większego niż pamięć, czy to prawda?

Dzięki, mam pełny skrypt poniżej tak można zobaczyć go w kontekście:

# Takes the name of a file as an argument and assigns to filename 
filename = ARGV.first 
script = $0 

puts "We're going to erase #{filename}." 
puts "If you don't want that, hit CTRL-C (^C)." 
puts "If you do want that, hit RETURN." 

print "? " 
STDIN.gets 

puts "Opening the file..." 
target = File.open(filename, 'w') 

puts "Truncating the file. Goodbye!" 
target.truncate(target.size) 

puts "Now I'm going to ask you for three lines." 

print "line 1: "; line1 = STDIN.gets.chomp() 
print "line 2: "; line2 = STDIN.gets.chomp() 
print "line 3: "; line3 = STDIN.gets.chomp() 

puts "I'm going to write these to the file." 

target.write(line1) 
target.write("\n") 
target.write(line2) 
target.write("\n") 
target.write(line3) 
target.write("\n") 

puts "And finally, we close it." 
target.close() 

Odpowiedz

11

$0 jest jednym z globalnych zmiennych Ruby. Od here:

$ 0 - Zawiera nazwę wykonywanego skryptu. Może być przypisany.

+0

Link wydaje się być martwy – raylu

0

Oh klasyczne książki Zeda Shawa! lol $ 0 pobiera dane wejściowe z wiersza poleceń przed pierwszym argumentem. Powiedzmy, że uruchomiłeś to za pomocą wiersza poleceń za pomocą interpretera ruby, możesz umieścić "ruby (fileName) test.txt", a $ 0 podniesie nazwę pliku i zapisze go w zmiennej "script". Nie jestem pewien, dlaczego robisz to tutaj, ponieważ używasz go później w programie, ale to wszystko. Sposób mogłeś przetestowane byłoby wydrukować na ekranie za pomocą puts, może dodać ten kawałek kodu, aby go zobaczyć siebie gdzieś w kodzie:

puts "The $0 has saved #{script} to it, I wonder where it got that." 

i zobaczyć to nazwać plik.

Powiązane problemy