Beiträge: 2.937
Themen: 179
Registriert seit: Apr 2008
Bewertung:
115
05.10.2014, 08:50
(Dieser Beitrag wurde zuletzt bearbeitet: 06.10.2014, 13:32 von Steevee.)
Hallo,
Script test.sh:
Code: #!/bin/bash
befehl1="ifconfig"
"$befehl1"
befehl2="df -h"
"$befehl2"
befehl1 wird ausgeführt, befehl2 (bzw. alle Befehle mit Leerzeichen) nicht. Was mach ich falsch?
Gruß
Steevee
VDR-Server: EasyVDR 2.0, TBS 6984, Asus P8H61-M LE, Intel Celeron G540, GT520
VDR-TFT: EasyVDR 2.0, Skystar HD2, Asus M2N-VM HDMI, AMD Athlon 4850e, GT520, Touch-TFT, Atric
VDR-SZ: EasyVDR 2.0, Cine S2 v6.0, Asus M4N78 Pro, AMD Athlon II X2 250, Atric
VDR-Susi: EasyVDR 1.0, TT S2-6400, Atric
VDR-Gabi: EasyVDR 2.0, Cine S2 v5.5, MB Asus, GT520, Atric
sonstige VDR Test-Hardware: Terratec Cinergy 1200 DVB-C, DVB-S2 TeVii S464, div. DVB-S FF, div. DVB-S Budget, IMON-LCD, Fritz-Box, Raspberry PI, USB-IR, div. ser. IR, ...
Beiträge: 9.394
Themen: 217
Registriert seit: Oct 2011
Bewertung:
215
Hi
Erklären kann ich es auch nicht, ich habe den Syntax bis heute noch nicht zu 100% verstanden, aber so gehts:
Code: befehl2="df -h"
$befehl2
Produktiv-VDR:
Board GA H77-DS3H, Intel Intel® Core i5-3470, Cine S2 DVB, WD 3TB Green, WDC WD20EARS-00J 2TB, Geforce 750Ti oder Intel HD
Easyvdr 3.0
Beiträge: 2.937
Themen: 179
Registriert seit: Apr 2008
Bewertung:
115
05.10.2014, 11:15
(Dieser Beitrag wurde zuletzt bearbeitet: 06.10.2014, 12:15 von Steevee.)
Ok. Im Test funktioniert das, aber nicht im "wahren Leben".
// Müll gelöscht
Gruß
Steevee
VDR-Server: EasyVDR 2.0, TBS 6984, Asus P8H61-M LE, Intel Celeron G540, GT520
VDR-TFT: EasyVDR 2.0, Skystar HD2, Asus M2N-VM HDMI, AMD Athlon 4850e, GT520, Touch-TFT, Atric
VDR-SZ: EasyVDR 2.0, Cine S2 v6.0, Asus M4N78 Pro, AMD Athlon II X2 250, Atric
VDR-Susi: EasyVDR 1.0, TT S2-6400, Atric
VDR-Gabi: EasyVDR 2.0, Cine S2 v5.5, MB Asus, GT520, Atric
sonstige VDR Test-Hardware: Terratec Cinergy 1200 DVB-C, DVB-S2 TeVii S464, div. DVB-S FF, div. DVB-S Budget, IMON-LCD, Fritz-Box, Raspberry PI, USB-IR, div. ser. IR, ...
Beiträge: 153
Themen: 21
Registriert seit: Jun 2013
Bewertung:
5
Ich hoffe, das hier hilft euch:
Code: [[email protected] ~]# vi ddd.sh
[[email protected] ~]# ./ddd.sh
+ befehl1=/usr/sbin/ifconfig
+ argsbefehl1=p4p1
+ /usr/sbin/ifconfig p4p1
p4p1: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 3c:97:0e:1f:46:b1 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
+ befehl2=df
+ argsbefehl2=-h
+ df -h
Dateisystem Größe Benutzt Verf. Verw% Eingehängt auf
/dev/dm-0 288G 273G 69M 100% /
devtmpfs 2,7G 0 2,7G 0% /dev
tmpfs 2,7G 944K 2,7G 1% /dev/shm
tmpfs 2,7G 8,9M 2,7G 1% /run
tmpfs 2,7G 0 2,7G 0% /sys/fs/cgroup
tmpfs 2,7G 4,7M 2,7G 1% /tmp
/dev/sda5 1008M 439M 518M 46% /boot
[[email protected] ~]# cat ddd.sh
#!/bin/bash
set -x
befehl1="/usr/sbin/ifconfig"
argsbefehl1="p4p1"
${befehl1} ${argsbefehl1}
befehl2="df"
argsbefehl2="-h"
${befehl2} ${argsbefehl2}
[[email protected] ~]#
Die Story ist, dass der Befehl "df" ist und das Argument "-h". Es ist nicht der Befehl "df -h" (da der Befehl df\ \-h rein zufällig nicht existiert....
Das "$befehl" finde ich ziemlich doof - bei ${befehl} wäre mir klar, dass der Befehl vorher ausgewertet wird.. Bei "$befehl" musste ich jezz wirklich denken.
Muss jezz Kinder bespassen, vielleicht habe ich gleich noch einmal Zeit, dann kann ich mir den array einmal ansehen.
Tuessi
Mostly Harmless: Grotendeels ongevaarlijk
EasyVDR1: Mainboard Asus P8Z77-V (oder ähnlich), NVidia GK208 bzw. GT 630 Rev. 2 passiv, DVB: WinTV Nova HD S2, Technisat SkyStar2 (nur DVB-S), USB-Bootstick/ext4 ohne Journal für VDR, Mediaplatte WDC WD40EFRX, FB One-for-All URC 1280 mit Code 1272 als MS-MCE für SAT (via WinTV Nova HD S2) - Prod auf EA3.5, Test auf EA5
EasyVDR2: Mainboard MSI Z370M-GAMING-PRO-AC, NVidia GK208 bzw. GT 630 Rev. 2 passiv, DVB: Digital Devices Octopus Cine C2T2S2 , SSD-Bootplatte mit EasyVDR5 Focal, EasyVDR4 Focal,... , VNSI gegen EasyVDR1, keine FB, Tastatur Funk Logitech und "Microdia RF Controller" via HID - Test auf EA5 - (Netflix, Youtube...)
Beiträge: 2.937
Themen: 179
Registriert seit: Apr 2008
Bewertung:
115
05.10.2014, 15:10
(Dieser Beitrag wurde zuletzt bearbeitet: 06.10.2014, 12:17 von Steevee.)
anstatt
Code: ${array[0]} >> "$logdatei"
dies
Code: befehl=${array[0]}
(${befehl[@]} >> $logdatei)
und dann gehts. hab ich jetzt rausbekommen. ist kompliziert, diese Syntax...
// naja ich merk nicht so 100%.... nochmal schaun...
VDR-Server: EasyVDR 2.0, TBS 6984, Asus P8H61-M LE, Intel Celeron G540, GT520
VDR-TFT: EasyVDR 2.0, Skystar HD2, Asus M2N-VM HDMI, AMD Athlon 4850e, GT520, Touch-TFT, Atric
VDR-SZ: EasyVDR 2.0, Cine S2 v6.0, Asus M4N78 Pro, AMD Athlon II X2 250, Atric
VDR-Susi: EasyVDR 1.0, TT S2-6400, Atric
VDR-Gabi: EasyVDR 2.0, Cine S2 v5.5, MB Asus, GT520, Atric
sonstige VDR Test-Hardware: Terratec Cinergy 1200 DVB-C, DVB-S2 TeVii S464, div. DVB-S FF, div. DVB-S Budget, IMON-LCD, Fritz-Box, Raspberry PI, USB-IR, div. ser. IR, ...
Beiträge: 2.937
Themen: 179
Registriert seit: Apr 2008
Bewertung:
115
06.10.2014, 12:22
(Dieser Beitrag wurde zuletzt bearbeitet: 06.10.2014, 12:24 von Steevee.)
Hallo,
also dass funktioniert schonmal:
Code: logdatei="/var/www/log/test.txt"
array[1]="cat /var/lib/vdr/sysconfig"
befehl=${array[1]}
(${befehl[@]} >> $logdatei)
wenn aber mehrere Befehle drinvorkommen wie z.B. "cat /var/lib/vdr/sysconfig | grep LAN":
Code: logdatei="/var/www/log/test.txt"
array[3]="cat /var/lib/vdr/sysconfig | grep LAN"
befehl=${array[1]}
(${befehl[@]} >> $logdatei)
funktioniert das nicht mehr. Wie drösel ich das denn auf?
Gruß
Steevee
VDR-Server: EasyVDR 2.0, TBS 6984, Asus P8H61-M LE, Intel Celeron G540, GT520
VDR-TFT: EasyVDR 2.0, Skystar HD2, Asus M2N-VM HDMI, AMD Athlon 4850e, GT520, Touch-TFT, Atric
VDR-SZ: EasyVDR 2.0, Cine S2 v6.0, Asus M4N78 Pro, AMD Athlon II X2 250, Atric
VDR-Susi: EasyVDR 1.0, TT S2-6400, Atric
VDR-Gabi: EasyVDR 2.0, Cine S2 v5.5, MB Asus, GT520, Atric
sonstige VDR Test-Hardware: Terratec Cinergy 1200 DVB-C, DVB-S2 TeVii S464, div. DVB-S FF, div. DVB-S Budget, IMON-LCD, Fritz-Box, Raspberry PI, USB-IR, div. ser. IR, ...
Beiträge: 2.937
Themen: 179
Registriert seit: Apr 2008
Bewertung:
115
Das ist die Lösung:
Code: eval ${array[0]} >> $logdatei
VDR-Server: EasyVDR 2.0, TBS 6984, Asus P8H61-M LE, Intel Celeron G540, GT520
VDR-TFT: EasyVDR 2.0, Skystar HD2, Asus M2N-VM HDMI, AMD Athlon 4850e, GT520, Touch-TFT, Atric
VDR-SZ: EasyVDR 2.0, Cine S2 v6.0, Asus M4N78 Pro, AMD Athlon II X2 250, Atric
VDR-Susi: EasyVDR 1.0, TT S2-6400, Atric
VDR-Gabi: EasyVDR 2.0, Cine S2 v5.5, MB Asus, GT520, Atric
sonstige VDR Test-Hardware: Terratec Cinergy 1200 DVB-C, DVB-S2 TeVii S464, div. DVB-S FF, div. DVB-S Budget, IMON-LCD, Fritz-Box, Raspberry PI, USB-IR, div. ser. IR, ...
|