Я имею сценарий, чтобы определить день/ночь для RRDTool графов:Script ошибка: значение слишком велики для базы (маркер ошибки «09»)
# Calculating Civil Twilight based on location from LAT LON
DUSKHR=`/usr/bin/sunwait sun up $LAT $LON -p | sed -n '/Sun rises/{:a;n;/Nautical twilight/b;p;ba}' | cut -c 45-46`
DUSKMIN=`/usr/bin/sunwait sun up $LAT $LON -p | sed -n '/Sun rises/{:a;n;/Nautical twilight/b;p;ba}' | cut -c 47-48`
DAWNHR=`/usr/bin/sunwait sun up $LAT $LON -p | sed -n '/Sun rises/{:a;n;/Nautical twilight/b;p;ba}' | cut -c 30-31`
DAWNMIN=`/usr/bin/sunwait sun up $LAT $LON -p | sed -n '/Sun rises/{:a;n;/Nautical twilight/b;p;ba}' | cut -c 32-33`
# Calculating sunset/sunrise based on location from LAT LON
SUNRISEHR=`/usr/bin/sunwait sun up $LAT $LON -p | sed -n '/Sun transits/{:a;n;/Civil twilight/b;p;ba}' | cut -c 30-31`
SUNRISEMIN=`/usr/bin/sunwait sun up $LAT $LON -p | sed -n '/Sun transits/{:a;n;/Civil twilight/b;p;ba}' | cut -c 32-33`
SUNSETHR=`/usr/bin/sunwait sun up $LAT $LON -p | sed -n '/Sun transits/{:a;n;/Civil twilight/b;p;ba}' | cut -c 45-46`
SUNSETMIN=`/usr/bin/sunwait sun up $LAT $LON -p | sed -n '/Sun transits/{:a;n;/Civil twilight/b;p;ba}' | cut -c 47-48`
# Converting to seconds
SUNR=$(($SUNRISEHR * 3600 + $SUNRISEMIN * 60))
SUNS=$(($SUNSETHR * 3600 + $SUNSETMIN * 60))
DUSK=$(($DUSKHR * 3600 + $DUSKMIN * 60))
DAWN=$(($DAWNHR * 3600 + $DAWNMIN * 60))
, который используется в RRDTool графах следующим образом:
#!/bin/bash
. inc/colors.sh
. inc/sunlight.sh
# Inside last 24 hours (mobile)
rrdtool graph /ram/temperature/graphs/sensors-24h-inside-mobile.png \
--alt-autoscale \
--slope-mode \
--width 638 --height 337 \
--border 0 \
--font AXIS:13:0 \
--color BACK#363636 --color CANVAS#363636 --color GRID#999999 --color MGRID#B5B5B5 --color FONT#CCCCCC \
--x-grid MINUTE:60:HOUR:1:MINUTE:360:0:%R \
--y-grid 1:1 \
DEF:Obyvacka=ds_temperature.rrd:O:AVERAGE \
CDEF:nightplus=LTIME,86400,%,$SUNR,LT,INF,LTIME,86400,%,$SUNS,GT,INF,UNKN,Obyvacka,*,IF,IF \
CDEF:nightminus=LTIME,86400,%,$SUNR,LT,NEGINF,LTIME,86400,%,$SUNS,GT,NEGINF,UNKN,Obyvacka,*,IF,IF \
AREA:nightplus#303030 AREA:nightminus#303030 \
CDEF:dusktilldawn=LTIME,86400,%,$DAWN,LT,INF,LTIME,86400,%,$DUSK,GT,INF,UNKN,Obyvacka,*,IF,IF \
CDEF:dawntilldusk=LTIME,86400,%,$DAWN,LT,NEGINF,LTIME,86400,%,$DUSK,GT,NEGINF,UNKN,Obyvacka,*,IF,IF \
AREA:dusktilldawn#222222 AREA:dawntilldusk#222222 \
LINE2:Obyvacka$GREEN:
, а иногда (я не определен шаблон еще) я получить следующее сообщение об ошибке:
inc/sunlight.sh: line 15: 18 * 3600 + 09: value too great for base (error token is "09")
ERROR: invalid rpn expression in: LTIME,86400,%,19920,LT,INF,LTIME,86400,%,,GT,INF,UNKN,Obyvacka,*,IF,IF
Но это выглядит, что это происходит только около 23 часов.
Я нашел много решений, но я не могу применить один к моему сценарию.
решение так просто, если вы знаете, что вы делаете. Сейчас он работает как прелесть. И я понимаю это из-за вашего минимального примера. Большое спасибо. – RoSi
Ou, он работал как прелесть в течение нескольких часов, но теперь теперь ** inc/sunlight.sh: строка 15: 10 # 1 * 3600 + 10 # 91 * 60: синтаксическая ошибка в выражении (маркер ошибки равен «1 * 3600 + 10 # 91 * 60 ") inc/sunlight.sh: строка 16: 10 # 1 * 3600 + 10 # 94 * 60: синтаксическая ошибка в выражении (токен ошибки« 1 * 3600 + 10 # 94 * 60 »)) ** ошибки. – RoSi
Похоже, что есть место перед «1» в одной из ваших переменных. Чтобы удалить все пробелы из переменной в bash, вы можете сделать следующее: 'export A =" 1 "; echo "$ {A //}" ' – jbr