2016-08-03 7 views
-1

Ich habe mein Dateisystem als wie untenEcho-Befehl funktioniert nicht wie in der Schale scriptin erwartet

Filesystem   Size Used Avail Use% Mounted on 
/dev/mapper/rootvg-rootvol 
         20G 3.7G 15G 20%/
tmpfs     71G 8.0K 71G 1% /dev/shm 

Und mein Code ist wie folgt:

varone = df -h | awk ' {print $1 }' 
vartwo = df -h | awk ' NR == 2 {print $2","$3","$4","$5","$6 }' 
echo "$varone $vartwo" >> /home/jeevagan/test_scripts/sizes/excel.csv 

ich die ‚df -h‘ exportieren will in eine CSV-Datei. Warum ich $1 alleine in einer Variablen ausgedruckt habe, gibt es Platz im 'df -h'-Ausgang. Ich möchte, dass es in einer Einzelleitung gedruckt wird.

Als ich das Skript ausführen, wirft es einen Fehler wie

varone: command not found

vartwo: command not found

+0

Mögliche Duplikat von [Wie erfassen wollte Stellen Sie eine Variable gleich der Ausgabe eines Befehls in Bash?] (http://stackoverflow.com/questions/4651437/how -zu-setzen-eine-Variable-gleich-zur-Ausgabe-aus-einem-Befehl-in-bash) – hek2mgl

Antwort

0

Sie keine Leerzeichen um das Gleichheitszeichen setzen können, und Sie brauchen einfache Anführungszeichen das Ergebnis Ihrer setzen Befehl in einer Variablen.

Versuchen Sie folgendes:

varone=`df -h | awk ' {print $1 }'` 
vartwo=`df -h | awk ' NR == 2 {print $2","$3","$4","$5","$6 }'` 
echo "$varone $vartwo" >> /home/jeevagan/test_scripts/sizes/excel.csv 
+0

Verwenden Sie '$()' anstelle von Backtics. – hek2mgl

+0

Das funktioniert @yoones. Aber es gibt die Ausgabe nicht wie erwartet. Meine erwartete Ausgabe ist /dev/mapper/rootvg-rootvol 20G 3.7G 15G 20%/ in separaten Zellen in einer CSV-Datei – zeewagon

+0

Dann in Betracht ziehen, etwas wie: 'varone = \' df -h | awk '{print $ 1}' | tr '\ n' ';' \ '' – yoones

Verwandte Themen