Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: [решено]проблема со скриптом bash  (Прочитано 2430 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн DimkaAtom

  • Автор темы
  • Новичок
  • *
  • Сообщений: 17
    • Просмотр профиля
пишу скрипт бегущей строки для conky. при запуске начинает ругаться на строку 18 Неправильная подстановка ла-ла-ла. подскажите как решить
(Нажмите, чтобы показать/скрыть)
« Последнее редактирование: 22 Июля 2011, 19:37:54 от DimkaAtom »

Оффлайн RazrFalcon

  • O_o
  • Старожил
  • *
  • Сообщений: 3129
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Re: проблема со скриптом bash
« Ответ #1 : 19 Июля 2011, 17:39:02 »
Что за ошибка и какая строка  18-я  :D
PS: У кунки есть своя реализация бегущей строки.
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: https://help.ubuntu.ru/wiki/fixme

Оффлайн DimkaAtom

  • Автор темы
  • Новичок
  • *
  • Сообщений: 17
    • Просмотр профиля
Re: проблема со скриптом bash
« Ответ #2 : 19 Июля 2011, 17:42:57 »
Что за ошибка и какая строка  18-я  :D
PS: У кунки есть своя реализация бегущей строки.
ошибка:
/home/dima/script.sh: строка 18: ${#art:($a):14}: неправильная подстановка
под спойлером код.
мне интересно сделать это именно через скрипт

ALiEN175

  • Гость
Re: проблема со скриптом bash
« Ответ #3 : 19 Июля 2011, 17:43:31 »
на мой нубский взгляд:

в sh/bash скриптах все, что после октоторпа (#) не воспринимается. После решетки обычно ставят комменты
если необходимо, чтобы решетка все-таки была, экранируйте её бэкслешем

\#
conky умеет сам бегущую строку делать

${scroll length text }
« Последнее редактирование: 19 Июля 2011, 17:47:02 от ALiEN175 »

Оффлайн DimkaAtom

  • Автор темы
  • Новичок
  • *
  • Сообщений: 17
    • Просмотр профиля
Re: проблема со скриптом bash
« Ответ #4 : 19 Июля 2011, 17:50:07 »
на мой нубский взгляд:
в sh/bash скриптах все, что после октоторпа (#) не воспринимается. После решетки обычно ставят комменты
нет, это конструкция вывода подстроки ${#art:3:2}. скрипт считывает всю строку $art, но мы на выходе имеем только 2 символа начиная с 3-го.

upd: буквально сегодня утром в другом скрипте я так строки обрезал.

upd 2: еще интересно почему он ругается на 18-ю строку, если в 11-й написано абсолютно то же самое
« Последнее редактирование: 19 Июля 2011, 17:53:22 от DimkaAtom »

ALiEN175

  • Гость
Re: проблема со скриптом bash
« Ответ #5 : 19 Июля 2011, 18:51:26 »
все-таки не нравится мне эта решетка

(Нажмите, чтобы показать/скрыть)

и да, у вас в двух строках
переменная atr, хотя везде указывается art
« Последнее редактирование: 19 Июля 2011, 18:57:35 от ALiEN175 »

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: проблема со скриптом bash
« Ответ #6 : 19 Июля 2011, 18:53:09 »
Цитировать
${#art:($a):14}

Оффлайн DimkaAtom

  • Автор темы
  • Новичок
  • *
  • Сообщений: 17
    • Просмотр профиля
Re: проблема со скриптом bash
« Ответ #7 : 19 Июля 2011, 20:04:23 »
все-таки не нравится мне эта решетка
Цитировать
${#art:($a):14}
вы оба правы. что-то меня переклинило с этим БАШем. В общем добился устойчивого вывода бегущей строки, но каждая строка появляется после предыдущей.
DJ SALL & DJ G
J SALL & DJ Gr
SALL & DJ Gre
SALL & DJ Gres
ALL & DJ Gresh
LL & DJ Greshn
а хотелось чтобы одна и та же строка замещалась разными выводами

Оффлайн RazrFalcon

  • O_o
  • Старожил
  • *
  • Сообщений: 3129
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Re: проблема со скриптом bash
« Ответ #8 : 19 Июля 2011, 20:23:49 »
Убрать echo -e -n '\r', а то я не пойму зачем это  :P
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: https://help.ubuntu.ru/wiki/fixme

ALiEN175

  • Гость
Re: проблема со скриптом bash
« Ответ #9 : 19 Июля 2011, 20:48:19 »
Цитировать
а хотелось чтобы одна и та же строка замещалась разными выводами

перед выводом echo поставить команду clear

clear
echo ${art:$a:14}
« Последнее редактирование: 19 Июля 2011, 20:50:39 от ALiEN175 »

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: проблема со скриптом bash
« Ответ #10 : 20 Июля 2011, 11:10:44 »
Код: (bash) [Выделить]
art="1234567890" ; a=0 ; l=4 ; while [[ a -le $((${#art}-$l)) ]] ; do echo -en "${art:$((a++)):$l}\r" ; sleep 1 ; done

Оффлайн DimkaAtom

  • Автор темы
  • Новичок
  • *
  • Сообщений: 17
    • Просмотр профиля
Re: проблема со скриптом bash
« Ответ #11 : 20 Июля 2011, 11:59:26 »
Убрать echo -e -n '\r', а то я не пойму зачем это  :P
это немного не правильная форма записи перевода каретки в начало строки. правильно так: echo -en "\r" (Спасибо arcfi)

Скрипт надежно заработал в терминале после вставки фрагмента от arcfi, но в коньки он не вставляется (с ним они вообще не отображают ни 1 слово). полный код скрипта:
#!/bin/bash
#скрипт позволяет выводить только нужную часть строки информации banshee
art=`banshee --query-artist`
art=${art/artist: /}
sleep 1
if ((${#art}>=14))
 then
   while true
    do
      while (($a+14<=${#art}))
do
        echo -en "${art:$((a++)):14}\r"
sleep 2
done
      let "a=0"
    done
fi
exit 0

 

Страница сгенерирована за 0.018 секунд. Запросов: 22.