[Gelöst] Streams im Script programmatisch umleiten?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
owl102

Re: Streams im Script programmatisch umleiten?

Beitrag von owl102 » 28.10.2016 10:47:31

Mir ist eine unfreundliche Antwort, die ich verwerten kann, viel lieber als eine freundliche, in der nichts drinsteht, was mich weiterbringt.

Hinzu kommt: Man muß wirklich aufpassen, was man wo hineininterpretiert. Man kann, wenn man will, die Antwort von niemand als unfreundlich interpretieren. Das funktioniert bei vielen Antworten, insbesondere, wenn sie kurz und knapp sind. Man kann sie aber auch als nicht-unfreundlich interpretieren, sondern als nett gemeinten Schubs in die richtige Richtung.

MrScoville
Beiträge: 93
Registriert: 09.09.2016 17:20:59
Lizenz eigener Beiträge: MIT Lizenz

Re: Streams im Script programmatisch umleiten?

Beitrag von MrScoville » 28.10.2016 16:55:51

heisenberg hat geschrieben:Naja, wissen was Du willst, das musst Du schon. Auch nur in die Richtung gehen zu wollen den LFS-Ansatz zu verfolgen und gleichzeitig keinerlei Arbeit haben wollen, dass ist ein Widerspruch in sich.
Logisch steckt da Arbeit hinter. Was ich sagen wollte, ist: Irgendwann möchte man auch einmal Ergebnisse sehen. Im echten Leben(TM) habe ich vor vielen, vielen, vielen! Jahren mal Linux-Webserver betreut, aber damals(TM) wurde noch die Slackware auf Disketten ausgeliefert. Na ja, fast. Und seitdem hat sich so irre viel verändert, dass mein neuer Einstieg in Linux eben dies ist: ein Neueinstieg. Damals(TM) war das SysV-Init noch Stand der Dinge, heute eben systemd mit all seinen Reizen und Hustenreizen.

Wieso nun LFS? Nun, ich schreibe gerade von einem Debian-Laptop, und meinen vRoot habe ich auch als Debian-Server aufgesetzt. Ich bin mit Debian also, und jetzt wörtlich: "zufrieden". ;)

Das System, das ich gerne hätte, soll jedoch so kompakt wie möglich sein. Ein monolithischer Kernel, der die nötigsten Treiber (nur ext4 Dateisystem auf USB, keine Bildschirmausgabe, keine Tastatur, keine Maus, kein Sound, kein IDE, kein SATA, dafür das GPIO-Zeug für den Raspberry), und vor allem sowohl in 32-Bit (also ähnlich wie MiniBian) als auch 64-Bit (MiniBian gibt es für ARM Architekturen noch nicht als 64-Bit-Version). Dafür alles drin, was man benötigt, um ein über WLAN kommunizierendes IoT-Gerät sicher betreiben zu können (noch so eine Baustelle zum ganz viel Lesen und Lernen und Probieren). Weiterhin möchte ich eigentlich gar keine Daemonen außer Syslog und Apache2 laufen haben. Schon gar keinen systemd mit all seinen Konsorten (Zeitgeist und Co.). Für meine Zwecke frisst das alles nur Ressourcen auf einer vergleichsweise langsamen CPU.

Eventuell muss ich je nach Anwendung sogar noch ein paar Echtzeit-Patches in die Kernel-Sourcen reinbasteln. Davon wird's auch nicht schöner, sondern, genau: mehr Arbeit.
Zuletzt geändert von MrScoville am 28.10.2016 17:11:08, insgesamt 1-mal geändert.
Man mag gar nicht glauben, wie sehr ein 4096-bittiger RSA-Schlüssel einem den Tag vermiesen kann...^^

Der so genannte "Teufel im Detail" hat einen Namen: Tight coupling :evil:

MrScoville
Beiträge: 93
Registriert: 09.09.2016 17:20:59
Lizenz eigener Beiträge: MIT Lizenz

Re: Streams im Script programmatisch umleiten?

Beitrag von MrScoville » 28.10.2016 17:05:45

heisenberg hat geschrieben:printf gibt es in der bash. Das Umlenkungszeichen, also z. B.: ">" kannst Du nicht in eine Variable packen. Das wird dann nicht als Umlenkungszeichen interpretiert sondern als Parameter oder Teil eines Parameters.
Ich habe das jetzt so gelöst:

Code: Alles auswählen

interactive=... # diverse Tests wie hier vorgeschlagen
if [ $interactive -eq 1 ]; then
    export SHOW_ONLY_IF_INTERACTIVE=''
else
    export SHOW_ONLY_IF_INTERACTIVE='>/dev/null'
fi
und in den aufgerufenen Scripten dann

Code: Alles auswählen

echo "Wert von HUGO ist $HUGO. $SHOW_ONLY_IF_INTERACTIVE"
Hat den Vorteil, dass ich beim Basteln diese Variable eben auch anders setzen kann (">/tmp/blablalog"), ohne anderen Code anfassen zu müssen wie etwa bei

Code: Alles auswählen

[[ $SHOW_ONLY_IF_INTERACTIVE -eq 1 ]] && echo...
Man mag gar nicht glauben, wie sehr ein 4096-bittiger RSA-Schlüssel einem den Tag vermiesen kann...^^

Der so genannte "Teufel im Detail" hat einen Namen: Tight coupling :evil:

Benutzeravatar
heisenberg
Beiträge: 3567
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: [Gelöst] Streams im Script programmatisch umleiten?

Beitrag von heisenberg » 28.10.2016 18:16:58

Wie wäre es so?

Code: Alles auswählen

#!/bin/bash

while getopts :dD: opt
do
   case $opt in
       d) export DEBUG=1 ;;
       D) USER_TARGET=$OPTARG;;
       ?) echo "Usage: $(basename $0) -d -D <logfile>"
   esac
done
export LOG_TARGET="${USER_TARGET:-/tmp/default.log}"

function my_debug { 
   if [ "$DEBUG" == "1" ]; then
      printf '%(%Y-%m-%d_%H:%M:%S)T : %s\n' "$*" >$LOG_TARGET;    # Date spawns no subprocess here
   }
}

# usage in code ...
my_debug "var blub=$blub"

Code: Alles auswählen

echo "Wert von HUGO ist $HUGO. $SHOW_ONLY_IF_INTERACTIVE"
Das - wie gesagt - geht nicht. Wenn, dann so:

Code: Alles auswählen

echo "Wert von HUGO ist $HUGO. >$SHOW_ONLY_IF_INTERACTIVE"
Zuletzt geändert von heisenberg am 28.10.2016 20:53:03, insgesamt 2-mal geändert.
Jede Rohheit hat ihren Ursprung in einer Schwäche.

MrScoville
Beiträge: 93
Registriert: 09.09.2016 17:20:59
Lizenz eigener Beiträge: MIT Lizenz

Re: [Gelöst] Streams im Script programmatisch umleiten?

Beitrag von MrScoville » 28.10.2016 18:49:42

heisenberg hat geschrieben:

Code: Alles auswählen

echo "Wert von HUGO ist $HUGO. $SHOW_ONLY_IF_INTERACTIVE"
Das - wie gesagt - geht nicht.
Doch, geht, jedes meiner Scripte wird über bash -c aufgerufen, aus Gründen.
Man mag gar nicht glauben, wie sehr ein 4096-bittiger RSA-Schlüssel einem den Tag vermiesen kann...^^

Der so genannte "Teufel im Detail" hat einen Namen: Tight coupling :evil:

Benutzeravatar
weedy
Beiträge: 585
Registriert: 02.11.2002 21:47:49
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: [Gelöst] Streams im Script programmatisch umleiten?

Beitrag von weedy » 02.11.2016 00:08:12

Noch eine Anregung:

Code: Alles auswählen

A="> out.txt"
$ echo "hello world" $A
hello world > out.txt
$ eval 'echo "hello world" '"$A"
$ cat out.txt
hello world

Gruß

Antworten