2016-04-02 33 views
0

ait gerçek değerler dizisini değiştirmek için, bu satırda dize $ f eklemek sonra, bir html dosyayı açmak hattını 12 silme ve gerektiği Benim bash dosya bir sıcaklık sensörü. Ama bankamı çalıştırdığımda hiçbir şey düzenlenemez.benim bash dosyamı düzenleyemezsiniz

temp.sh

#!/bin/bash 
f="myArray_a = [" 
for ((i=0 ; 12 - $i ; i++)) 
    do 
    x=$(cat /sys/bus/w1/devices/28-0000075292ed/w1_slave | grep "t=" | awk -F "t=" '{print $2/1000}') 
if [ $i -eq 11 ] 
then 
x=$(printf %.3f] $x) 
f="$f $x" 

sed '12 d' index.html 
sed -i -e '12i'$f' '$12'\' index.html 

else 
x=$(printf %.3f, $x) 
f="$f $x" 
fi 



done | column 

index.html

<!DOCTYPE HTML> 
 
<html> 
 
\t <head> 
 
\t \t <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
 
\t \t <META HTTP-EQUIV="Refresh" CONTENT="10"> 
 
\t \t <title> Temperature values</title> 
 
       <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script> 
 
\t \t <style type="text/css"> 
 
${demo.css} 
 
       </style> 
 
\t  <script type="text/javascript"> 
 
myArray_a 
 
myArray_a 
 
myArray_a 
 
myArray_a 
 
      var myArray_a = [1, 2, 3, 4, 0, 5, 0, 0, 0, 0, 0, 0, 1]; 
 
$(function() { 
 
    $(document).ready(function() { 
 
     Highcharts.setOptions({ 
 
      global: { 
 
       useUTC: false 
 
      } 
 
     }); 
 

 
     $('#container').highcharts({ 
 
      chart: { 
 
       type: 'spline', 
 
       animation: Highcharts.svg, // don't animate in old IE 
 
       marginRight: 10, 
 
       events: { 
 
        
 
       } 
 
      }, 
 
      title: { 
 
       text: 'Live sensor data' 
 
      }, 
 
      xAxis: { 
 
       type: 'datetime', 
 
       tickPixelInterval: 150 
 
      }, 
 
      yAxis: { 
 
       title: { 
 
        text: 'Value' 
 
       }, 
 
       plotLines: [{ 
 
        value: 0, 
 
        width: 1, 
 
        color: '#808080' 
 
       }] 
 
      }, 
 
      tooltip: { 
 
       
 
      }, 
 
      legend: { 
 
       enabled: false 
 
      }, 
 
      exporting: { 
 
       enabled: false 
 
      }, 
 
      series: [{ 
 
       name: 'sensor data', 
 
       data: (function() { 
 
        // generate an array of random data 
 
        var data = [], 
 
         time = (new Date()).getTime(), 
 
         i; 
 

 
        for (i = 0; i <= 12; i += 1) { 
 
         data.push({ 
 
          x: time + i * 1000, 
 
          y: myArray_a[i] 
 
         }); 
 
        } 
 
        return data; 
 
       }()) 
 
      }] 
 
     }); 
 
    }); 
 
}); 
 
\t \t </script> 
 
\t </head> 
 
\t <body> 
 
<script src="https://code.highcharts.com/highcharts.js"></script> 
 

 
<div id="container" style="min-width: 310px; height: 400px; margin: 0 auto"></div> 
 

 
\t </body> 
 
</html>

şununla iki sed komutları yerine
+0

emin misiniz 'dosyaları doğrudan değiştirilebilir html'? Ben her zaman '.txt' dosyalarını kullandım. – keras

+0

Tüm örnekleri .txt ile gördüm. Herhangi bir uzantıyı kullanabileceğimi düşündüm. Ya da sorunumu çözmek için başka bir çözümünüz var mı? – user5996908

+0

'html' kodunu' txt' dosyasına kopyalayın ve değiştirin, ancak bunu yapmak için herhangi bir komut bilmiyorum. – keras

cevap

0

:

sed -i "12c \ 
$f 
" index.html 

c komutu "change" (silme eşdeğeri sonra ekleme) içindir.

$12 değişkenini, enjekte edilecek dizenin bir parçası olmamak üzere buraya eklemedim.

Güncelleme: Eğer değiştirmek istiyorsanız sizin array_a mevcut, daha iyi (sizin örnek html hat 12'de değil de array_a) hat numarasına güvenmeyin olacağımı

Not.

Bu tam dize yerine maç için daha iyi olurdu:

sed -i "s/^[ \t]*var myArray_a[^;]*;/$f/" index.html 
+0

içinde değiştirilmesi gerektiğini size teşekkür ederim :) – user5996908