2016-04-02 6 views
0

My bash Datei sollte eine html Datei öffnen, löschen Zeile 12, und dann in dieser Zeile die Zeichenfolge $ f einzufügen, um das Array von den Istwerten zu ändern ein Temperatursensor. Aber wenn ich meine Bank ausführe, wird nichts bearbeitet.meine bash kann meine Datei nicht bearbeiten

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>

+0

Sind html' Dateien direkt geändert werden können? Ich habe immer '.txt' Dateien benutzt. – keras

+0

Ich sah alle Beispiele mit .txt Ich dachte, ich kann jede Erweiterung verwenden. Haben Sie eine andere Lösung, um mein Problem zu lösen? – user5996908

+0

Kopieren Sie den 'html' Code in eine' txt' Datei und modifizieren Sie diese, aber ich kenne keine Befehle dafür. – keras

Antwort

0

Sie können Ihre zwei sed Befehle mit ersetzen:

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

Der Befehl c steht für "change" (entspricht Löschen und Einfügen).

Ich habe die Variable $12 hier nicht enthalten, da sie nicht Teil der zu injizierenden Zeichenfolge zu sein scheint.

Update:

Beachten Sie, dass, wenn Sie Ihre bestehende array_a ersetzen möchten, sollten Sie besser nicht auf Zeilennummer verlassen (array_a in nicht in Zeile 12 in Ihrer Probe html).

Sie würden besser dies die genaue String zu ersetzen: Sie sicher, dass `

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

danke es funktioniert :) – user5996908