• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Bash Kommando an Variabel übergeben und anzeigen

Hallo,
ich bin neu in der Skrip-Programmierung in Linux(Raspbian). Ich möchte die Ausgabe eines Kommandos (cangen) in eine Variabel speichern und spätter in meinem Skript verarbeiten.

Mit dem Befehl "cangen" generiere ich anhand eines virtuellen CAN-Bus-Interface CAN-Bus Daten. Diese Daten möchte ich immer in einer Variabel speichern. Normalerweise bekomme ich solche Daten, wenn ich den Befehl ausführe(Anhang):

Befehl:
Code:
cangen vcan0 -g 4 -I 7E -L 8 -D r -v
Ausgabe:http:
http://www.bilder-upload.eu/show.php?file=0263db-1470922561.jpg

Nun möchte folgender Skript, die Ausgabe des Befehls in einer Variabel speichern:

Code:
#!/bin/bash

#We have to generate a virtual CAN bus Interface

sudo modprobe vcan
sudo ip link add dev vcan0 type vcan
sudo ip link set up vcan0

candata= `cangen vcan0 -g 0.008 -I 7E -L 8 -D r -v`
echo $candata

Leider bekomme ich keine Ausgabe. ich bekomme nur die Nachricht:

Code:
RTNETLINK answers: File exists
Ich habe nicht sehr viel Erfahrung in Python und die Programmierung mit Skript in Linux, deswegen wollte ich mal hier fragen, ob jemand mir helfen könnte meine Herausforderung zu lösen.

Danke
 
Code:
#!/bin/bash

get_data()
{
	local line dev="$1"
	while read -r line; do
		printf "$line\n"	# do whatever you have todo with $line contents
	done <<< "$(cangen $dev -g 4 -I 7E -L 8 -D r -v)"
}

get_data "vcan0"

Gräfin Klara

p.s.
sudo in script ist verboten und wird mit öffentlicher Auspeitschung geahndet.
 

susejunky

Moderator
Teammitglied
Hallo Rejocktana,

Rejocktana schrieb:
... Nun möchte folgender Skript, die Ausgabe des Befehls in einer Variabel speichern:

Code:
#!/bin/bash

#We have to generate a virtual CAN bus Interface

sudo modprobe vcan
sudo ip link add dev vcan0 type vcan
sudo ip link set up vcan0

candata= `cangen vcan0 -g 0.008 -I 7E -L 8 -D r -v`
echo $candata
bei "candata= `cangen ..." darf kein Leerzeichen nach dem "=" folgen: "candata=`cangen ...".

Viele Grüße

susejunky
 
Oben