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


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: [РЕШЕНО] Подсчет даты  (Прочитано 1345 раз)

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

Оффлайн RazrFalcon

  • Автор темы
  • O_o
  • Старожил
  • *
  • Сообщений: 3144
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
[РЕШЕНО] Подсчет даты
« : 21 Май 2011, 20:48:51 »
#!/bin/bash
my=`echo "`date +%Y` + 2" | bc -l`
echo $my

./age
./age: command substitution: line 2: unexpected EOF while looking for matching `"'
./age: command substitution: line 3: syntax error: unexpected end of file
./age: command substitution: line 2: unexpected EOF while looking for matching `"'
./age: command substitution: line 3: syntax error: unexpected end of file
./age: line 2: +%Y: command not found

Как заставить считать дату?
Именно в одну строку.
« Последнее редактирование: 22 Май 2011, 00:05:03 от RazrFalcon »
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: http://help.ubuntu.ru/wiki/fixme

Оффлайн es1840

  • Активист
  • *
  • Сообщений: 287
    • Просмотр профиля
Re: Подсчет даты
« Ответ #1 : 21 Май 2011, 21:59:45 »
Может быть так?
#!/bin/bash
let my=`date +%Y`+2
echo $my
« Последнее редактирование: 21 Май 2011, 22:02:02 от es1840 »

Оффлайн RazrFalcon

  • Автор темы
  • O_o
  • Старожил
  • *
  • Сообщений: 3144
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Re: Подсчет даты
« Ответ #2 : 21 Май 2011, 22:40:36 »
Да, работает, не понятно почему предыдущий вариант багится.
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: http://help.ubuntu.ru/wiki/fixme

Оффлайн фирэфохэ

  • Старожил
  • *
  • Сообщений: 2169
  • straightedge
    • Просмотр профиля
Re: Подсчет даты
« Ответ #3 : 21 Май 2011, 23:59:38 »
С кавычками косяк, вот ещё несколько вариантов:
$ my=`echo \`date +%Y\` + 2  | bc -l`
$ my=`echo "\`date +%Y\` + 2" | bc -l`
$ my=`echo $(date +%Y) + 2 | bc -l`
$ y=$(echo $(date +%Y) + 2 | bc -l)
У тебя такие ` кавычки группируются так:
Цитировать
my=`echo "`date +%Y` + 2" | bc -l`
http://i18.ЗАПРЕЩЁННЫЙ РЕСУРС/big/2011/0325/6d/19eaa72dd24048a6fb0587832c4b096d.gif КДЕ - УГ. Дебиан - недоось.

Оффлайн RazrFalcon

  • Автор темы
  • O_o
  • Старожил
  • *
  • Сообщений: 3144
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Re: Подсчет даты
« Ответ #4 : 22 Май 2011, 00:04:51 »
ОО, спасибо фирэфохэ.
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: http://help.ubuntu.ru/wiki/fixme

Оффлайн es1840

  • Активист
  • *
  • Сообщений: 287
    • Просмотр профиля
Re: Подсчет даты
« Ответ #5 : 22 Май 2011, 20:03:17 »
Да, работает, не понятно почему предыдущий вариант багится.
Потому, что кавычки, конечно -это раз.

А вообще в Bash переменные не имеют типа, поэтому и присваивание посредством let.
А так, получается, у вас вызывается 3(три) программы для обработки (echo+date+bc) переменной вместо 1(одной).
Почитайте Mendel Cooper Advanced Bash-Scripting Guide, можно найти переводы в сети.
Хотя в примерах фирэфохэ, конечно, выглядит весомее...  ;)
« Последнее редактирование: 22 Май 2011, 20:06:23 от es1840 »

 

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