2015-05-24 4 views
0

Я новичок в ruby (это, может быть, моя первая программа), и я пытаюсь создать скрипт, устанавливающий необязательные зависимости pacman (packages manager). Я пишу этот кодСинтаксическая ошибка, неожиданное keyword_end

#!/usr/bin/ruby 
packs="" 
exit if ARGV.count==0 
ARGV.each do |arg| 

    out=%x(LANG="C" pacman -Si #{arg}) 
    next if out.empty? 

    packs+="{arg} " 

    lines=out.split "\n" 
    first=(lines[11].split ":")[1].strip 

    next if first == "None" 

    packs+="#{first} " 

    i=12 
    while lines[i][0]==" " do 

     packs+=(lines[i].split ":")[0].strip + " " 
     i++ 

    end 
end 
exec ("pacman -S #{packs}") 

Но когда я пытаюсь запустить скрипт я получаю эти ошибки:

./pacman-odep:24: syntax error, unexpected keyword_end 
    ./pacman-odep:26: syntax error, unexpected end-of-input, expecting keyword_end 

Что не так?

EDIT: Если вы хотите, вы можете проверить скрипт с переменным out равен этим текстом:

Repository  : extra 
Name   : gimp 
Version  : 2.8.14-2 
Description : GNU Image Manipulation Program 
Architecture : x86_64 
URL   : http://www.gimp.org/ 
Licenses  : GPL LGPL 
Groups   : None 
Provides  : None 
Depends On  : pygtk lcms libxpm libwmf libxmu librsvg libmng dbus-glib libexif 
       gegl jasper desktop-file-utils hicolor-icon-theme babl openexr 
Optional Deps : gutenprint: for sophisticated printing only as gimp has built-in cups print 
       support 
       webkitgtk2: for the help browser 
       poppler-glib: for pdf support 
       alsa-lib: for MIDI event controller module 
       curl: for URI support 
       ghostscript: for postscript support 
Conflicts With : gimp-devel 
Replaces  : None 
Download Size : 11.83 MiB 
Installed Size : 65.23 MiB 
Packager  : Tobias Powalowski <[email protected]> 
Build Date  : Fri May 8 17:48:18 2015 
Validated By : MD5 Sum SHA256 Sum Signature 
+0

Две из этих ошибок относятся к непревзойденной двойной кавычки в последней строке. –

+0

Не редактируйте вопрос, чтобы изменить его смысл. Редактирование ваших ошибок делает вопрос и любые существующие ответы бессмысленными. Я отменил ваши изменения. –

+0

@HoboSapiens Можете заплатить, чтобы отменить предыдущие изменения, а также – Rots

ответ

2

Ближайшей задачей является

exec ("pacman -S {packs}) 

Это отсутствует знак речи, должно быть :

exec ("pacman -S #{packs}") 

Вторая проблема заключается в использовании i++. Заменить на i+=1.

+0

да, я исправил первый пост, теперь есть 2 ошибки – Andrea993

+0

Два предложения. Вам нужно # перед пакетами: 'exec (" pacman -S # {packs} ")'. Также замените строку 'out =% x (LANG =" C "pacman -Si # {arg})' с 'out =" ruby ​​"' просто для проверки. – Rots

+0

Должно быть # {packs} – vol7ron

Смежные вопросы