Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

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, 7607 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 ..
Ähnliche Inhalte
Batch & Shell
gelöst Teil eines Strings als Variable setzen (2)

Frage von tHe-jAy zum Thema Batch & Shell ...

PHP
gelöst TXT Datei auslesen und bestimmte Zeilen in Variable setzen (11)

Frage von 126594 zum Thema PHP ...

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

Frage von DontFlameMeITryMyBest zum Thema Batch & Shell ...

Windows 10
gelöst Auf Softwareupdates prüfen (4)

Frage von honeybee zum Thema Windows 10 ...

Neue Wissensbeiträge
Sicherheit

Millionen Euro in den Sand gesetzt?

(3)

Information von transocean zum Thema Sicherheit ...

Sicherheit

How I hacked hundreds of companies through their helpdesk

Information von SeaStorm zum Thema Sicherheit ...

Heiß diskutierte Inhalte
Netzwerke
Mobile Einwahl IPSec VPN von iPhone iPad T-Mobile zur Pfsense (13)

Frage von Spitzbube zum Thema Netzwerke ...

LAN, WAN, Wireless
Eine Netzwerkdose im Wechsel für zwei unterschiedliche Netze (12)

Frage von kartoffelesser zum Thema LAN, WAN, Wireless ...

Voice over IP
SNOM D765 an LancomR883VAW (10)

Frage von MS6800 zum Thema Voice over IP ...

Windows Netzwerk
Ordner-Freigabe außerhalb der Domäne (9)

Frage von Remsboys zum Thema Windows Netzwerk ...