2014-04-13 3 views

ответ

1

Положить "\n" перед строкой, которую необходимо добавить.

+0

меняю к этому 'отправить = parsed_songlist [ "песня"] [0] [ 'художник'] + "\ п" + parsed_songlist ["song"] [0] ['albumtitle'] 'и поместите его в команду. Он может работать, но оболочка заметит, что 'sh: 2 (название альбома): not found'. Так странно – Ziu

+0

Это потому, что вы используете 'system()'. Это как будто вы печатаете строки в оболочке. Как только вы нажмете enter, вы вводите другую команду. 'bash' говорит вам, что не понимает вашу вторую строчку. Попробуйте выйти из «\ n», предваряя его другим «\». –

0

Использование join.

system("notify-send -i 
    #{Dir.pwd}/#{file} 
    #{parsed_songlist["song"][0]['title']} 
    #{ [ 
     parsed_songlist["song"][0]['artist'], 
     parsed_songlist["song"][0]['albumtitle'] 
    ].join("\n") }" 
) 
+0

Это строковый класс, поэтому я думаю, что он не имеет метода 'join'. – Ziu

+0

Я исправил свою опечатку. –

0

Я думаю \n достаточно:

"#{parsed_songlist["song"][0]['artist']".concat("\n#{parsed_songlist["song"][0]['albumtitle']") 
1

Попробуйте это:

"\'#{parsed_songlist['song'][0]['title']}\' 
\'#{parsed_songlist['song'][0]['artist']}\n#{parsed_songlist['song'][0]['albumtitle']}\'" 

Проблема в вашей команде, если ваше название/исполнитель/albumtile содержат мульти-слова, как hello hi то команда будет отображаться как notify-send -i /home/username/file hello hi ...

Итак, вы могли видеть, как этот многословный «заголовок» преобразуется как два argumenst для notify-send. Чтобы решить эту проблему, используйте \', как я использовал выше.

Однако '\ n' достаточно для добавления новой строки в строку с двумя qouted.

Вот, что я получаю, когда я использовал выше

enter image description here

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