Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

variable setzen und prüfen CSH

Frage Linux

Mitglied: ottscho

ottscho (Level 2) - Jetzt verbinden

01.07.2008, aktualisiert 08.07.2008, 7363 Aufrufe, 5 Kommentare

Hallo zusammen,

ich versuche mich gerade etwas an Scripten mit der CSH in Verbindung mit einer GUI (Zenity).
Ich habe hier ein Script, und würde gerne den Autput von Zenity direkt in eine Variable schreiben, und nicht erst in eine Datei und dann mit tail die Datei lesen und in eine Varibale schreiben.
Außerdem würde ich gerne die Variable auf Inhalt prüfen und bekomme es nicht hin. Ich denke es liegt an dem einlesen mit trail.

Bitte gebt mir mal einen Tipp:

[code]
#!/bin/tcsh
set echo

LftNr:
#Laufkartennummer festlegen
zenity --entry --title="2D Barcode PRINTAR" --text="Geben Sie bitte die LfkNummer an:" --entry-text="" >> /tmp/lftnr
set strLftNr = `tail -l /tmp/lftnr`
rm -f /tmp/lftnr
echo ""$strLftNr""

Index:
#Index Wert festlegen
zenity --entry --title="2D Barcode PRINTAR" --text="Geben Sie bitte einen Index Wert an:" --entry-text="" >> /tmp/index
set strIndex = `tail -l /tmp/index`
rm -f /tmp/index
echo ""$strIndex""

#Lagenbezeichnung festlegen
zenity --list --radiolist --width=400 --height=150 --title "2D Barcode PRINTAR" --text "Wählen Sie bitte die Lagenkennzeichnung aus:" --column=" " --column Variable --column Beschreibung \
"\" TWE "Bauteilseite = B / Lötseite = L" \
"\" PHG "Bauteilseite = LCS / Lötseite = LBS" \
/tmp/date
set strLage = `tail -l /tmp/lage`
rm -f /tmp/lage
echo ""$strLage""

#Datumsforamt festlegen
zenity --list --radiolist --width=400 --height=200 --title "2D Barcode PRINTAR" --text "Wählen Sie bitte das Datumformat aus:" --column=" " --column Variable --column Beschreibung \
"\" %W%y "Kalenderwoche / Jahr 2-stellig" \
"\" %W%Y "Kalenderwoche / Jahr 4-stellig" \
"\" %x "Monat/Tag/Jahr 2-stellig" \
/tmp/date
set strDate = `tail -l /tmp/date`
rm -f /tmp/date
echo ""$strDate""

#Reihefolge festlegen
zenity --list --radiolist --width=400 --height=325 --title "2D Barcode PRINTAR" --text "Wählen Sie bitte die Reihenfolge aus:" --column=" " --column Variable --column Beschreibung \
"\" ULC_RIGHT "LinksOben->RechtsUnten - Horizontal" \
"\" ULC_DOWN "LinksOben->RechtsUnten - Vertiakl" \
"\" DLC_RIGHT "LinksUnten->RechtsOben - Horizontal" \
"\" DLC_UP "LinksUnten->RechtsOben - Vertiakl" \
"\" DRC_LEFT "RechtsUnten->LinksOben - Horizontal" \
"\" DRC_UP "RechtsUnten->LinksOben - Vertiakl" \
"\" URC_LEFT "RechtsOpen->LinksUnten - Horizontal" \
"\" URC_DOWN "RechtsOebn->LinksUnten - Vertiakl" \
/tmp/counter
set strCounter = `tail -l /tmp/counter`
rm -f /tmp/counter
echo ""$strCounter""
[/code]
Mitglied: 1bgks6
06.07.2008 um 05:02 Uhr
Zumindest solltest Du nie ohne weitere Prüfung an eine Datei mit festem Namen schreiben. Falls mehrere Instanzen des Scripts laufen schreiben die bunt durcheinander in die Datei. Üblich wäre, die zwangsläufig zur Laufzeit eineindeutige PID der jeweiligen Instanz für den Dateinamen zu verwenden. Natürlich ist grundsätzlich blödsinnig, auf der Disk rumzuschreiben, wo Pipes verfügbar sind.

Was hält Dich davon ab, ganz einfach den Umweg über die Dateiausgabe zu eliminieren und den stdout des zenity direkt an die Variable zu übergeben?

01.
set strSchnick = `zenity --schnack`
Was mißglückt Dir beim Testen der Variablen auf Inhalt? Auf welchen Inhalt? Was genau gibt zenity zurück?
Bitte warten ..
Mitglied: ottscho
07.07.2008 um 07:49 Uhr
ich hatte es schon so oft auf diese Methode "set strSchnick = `zenity --schnack`" versucht, aber es ging nie. Eben hat es funktioniert. Vllt habe ich aus meiner Dummheit die ` Zeichen in die falsche Richtung gemacht... Danke dir

Nun muss ich überprüfen, ob der User überhaupt was angegeben hat, oder ob die Varibale leer ist.
Die habe ich nun mit if ($var != "") gemacht.


Weißt du zufällig noch, wo die CSH die Rückgabewerte speichert? Bei der BASH ist ist $?
Ich muss ja irgendwie herausfinden, wenn der User abbrechen drückt.

Danke
Gruß ottscho
Bitte warten ..
Mitglied: 1bgks6
07.07.2008 um 14:39 Uhr
Der Exit-Status des zuletzt ausgeführten Kommandos steht bei CSH in der vordefinierten Umgebungsvariablen »status«. Aufzupassen ist, welches das tatsächlich zuletzt ausgeführte Kommando ist: hier ist es nicht zenity, sondern set.

Möglichkeiten*:

a) Die Nutzereingaben sind immer nur eine Auswahl aus den mir bekannten Vorgaben:
01.
set strSchnick = `zenity --text 'Nie ABBRUCH' || echo 'ABBRUCH'` 
02.
if( $strSchnick == 'ABBRUCH' ) then schießmichtot
b) Standardlösung: Abbruch der Eingabemaske bricht die gesamte Programmausführung ab (oder bei entsprechender Vorbreitung die jeweilige Subshell)*:
01.
set strSchnick = `zenity --schnack || exit $status`
*) Bei der (b)-Lösung springt das exit schlimmstenfalls lediglich aus der ``-Subshell raus. Sind nur strukturelle Vorschläge, ich kann nicht testen. Besserenfalls scheitert das set sowieso bzw. termininert mit einem von 0 abweichenden Status, wenn zenity wegen Nutzerabbruch mit einem von 0 abweichenden terminiert und dann auch keinen Leer-String auf stdout rückgib.
Bitte warten ..
Mitglied: ottscho
07.07.2008 um 16:06 Uhr
danke, für deine ausführliche beschreibung.

leider geht es nicht. ich habe folgendes versucht:
#Laufkartennummer festlegen
set strLftNr = `zenity --entry --title="2D Barcode PRINTAR" --text="Geben Sie bitte die LfkNummer an:" --entry-text="${strLftNr}" --window-icon=$strIcon || goto test`

ganz am ende der datei habe ich dann ein test:
leider kommt hier die meldung;
Script message: zenity --entry --title=2D Barcode PRINTAR --text=Geben Sie bitte die LfkNummer an: --entry-text=1654322 --window-icon=/usr/share/pixmaps/accessx-status-applet/sticky-super-latched.png
Script message: goto test
Script message: test: label not found.

Ebenso habe ich es einfach nur mit der exit versucht, hier kommt folgendes, aber es passiert nichts:
Script message: zenity --entry --title=2D Barcode PRINTAR --text=Geben Sie bitte die LfkNummer an: --entry-text=1654322 --window-icon=/usr/share/pixmaps/accessx-status-applet/sticky-super-latched.png
Script message: exit

alles etwas sehr merkwürdig.
falls dich das ganze script interessiert, hier findest du es:
www.tw-elektric.de/temp/Printar_2D_Barcode.csh

Gruß Ottscho
Bitte warten ..
Mitglied: ottscho
08.07.2008 um 15:29 Uhr
habe es nun raus, so geht es:

set strSchnick = `zenity --schnack` || exit
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
Variable setzen können während timeout (3)

Frage von DontFlameMeITryMyBest zum Thema Batch & Shell ...

Batch & Shell
gelöst Variable auf Inhalt prüfen (1)

Frage von PinkFLuffyUnicorn zum Thema Batch & Shell ...

Batch & Shell
gelöst Selected Gridview Value in Variable schreiben (4)

Frage von reissaus73 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...