Testdatei in Variable einlesen

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von doncapo, 05.01.2009.

  1. #1 doncapo, 05.01.2009
    doncapo

    doncapo Grünschnabel

    Dabei seit:
    05.01.2009
    Beiträge:
    6
    Zustimmungen:
    0
    Hallo,
    ich bin absoluter Newbie und habe die Aufgabe in der Uni bekommen, einen Text zu verschlüsseln.
    Zuerst soll ein Shellskript aufgebaut werden, dass die Vorkommen einzelner Buchstaben zählt. Mein Problem ist, das die Datei via Argument bei der Ausführung des Skripts eingelesen werden soll. Also das Argument den Namen beinhalten worüber dann beim Shellskript-Start der Dateiinhalt der Datei, die sich hier hinter verbirgt in ein Variable eingelesen werden soll. Mir ist jedoch leider nicht klar, wie ich das umsetze mit meinem bislang noch dürftigen Kenntnisstand.

    Kann mir vielleicht jemand bitte behilflich sein?

    Danke im Voraus!
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. L0s3r

    L0s3r Tripel-As

    Dabei seit:
    22.09.2007
    Beiträge:
    216
    Zustimmungen:
    0
    Ort:
    MV
    Wenn die Datei mit dem ersten Argument übergeben wird dann
    Code:
    var=$(cat $1)
     
  4. #3 doncapo, 05.01.2009
    doncapo

    doncapo Grünschnabel

    Dabei seit:
    05.01.2009
    Beiträge:
    6
    Zustimmungen:
    0
    Also ich habs nun mit Folgendem testweise versucht, jedoch bekomme ich eine Fehlermeldung.

    Code:
    set var = $(cat $argv[1])
    echo $var
    
    Fehlermeldung: Ungültiger Variablenname
     
  5. #4 Wolfgang, 05.01.2009
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Erstmal bitte angeben welche Shell du verwendest.

    Dann für den fall der Bash:

    Variablenzuweisungen dürfen kein Leerzeichen zwischen dem Gleichheitszeichen und dem Wert enthalten.

    Code:
    # richtig
    VAR=10
    #falsch
    VAR = 10
    
    Positionsparameter sind in der Bash in den vordefinierten Variablen $1..$N enthalten.
    Also das erste Argument in $1 das zweite in $2 usw.
    Das laufende Skript in $0 (nur als Zusatzinformation).

    Dann solltest du das Quoting nicht vergessen.
    Beispiel:
    Code:
    #!/bin/bash
    MY_VAR=$1
    echo $MY_VAR
    
    Aufruf
    Code:
    ./myskript "test"
    
    gibt dir test aus

    Dann solltest du immer Prüfen, ob es die Datei gibt und sie lesbar ist.

    Code:
    if ! [ -w "$1" ]; then 
    echo " $1 existiert nicht oder ist nicht lesbar" ;
    exit;
    fi
    VAR="$(cat $1)"
    ...
    
    Gruß Wolfgang
     
  6. #5 doncapo, 05.01.2009
    doncapo

    doncapo Grünschnabel

    Dabei seit:
    05.01.2009
    Beiträge:
    6
    Zustimmungen:
    0
    Oh sorry, wir sollen generell in der tcsh arbeiten. In den Skripten soll noch folgendes rein:
    Code:
    #! /bin/csh
     
  7. #6 Wolfgang, 05.01.2009
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Dann sollte dir die Manpage deiner Shell schon verraten haben, dass diese Art die Backtics zu sparen $(command ARG) in der CSH nicht gilt.
    Also verwende statt dessen Backtics.
     
  8. #7 doncapo, 06.01.2009
    Zuletzt bearbeitet: 06.01.2009
    doncapo

    doncapo Grünschnabel

    Dabei seit:
    05.01.2009
    Beiträge:
    6
    Zustimmungen:
    0
    Gern, nur was ist ein Backtic? Konnte ad hoc bei Google nichts klares finden...?! :hilfe2:
    .
    .
    .
    EDIT (autom. Beitragszusammenführung) :
    .

    Ok, habe einen Ansatz: Also es handelt sich um diese "speziellen" Anführungszeichen, wonach deren Inhalt in einer Subshell ausgeführt wird - vermutlich dann also cat xy. Nur wie bekomme ich das in die Variable?
     
  9. #8 sim4000, 06.01.2009
    sim4000

    sim4000 Lebende Foren Legende

    Dabei seit:
    12.04.2006
    Beiträge:
    1.933
    Zustimmungen:
    0
    Ort:
    In meinem Zimmer
    Ich kenn zwar nur bash, aber vielleicht so?
    Code:
    VAR=`cat foo`
     
  10. #9 Wolfgang, 06.01.2009
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Mal ehrlich, du willst/sollst das lernen. Hast du dir wirklich mal die Manpage angesehen?
    Das solltest du dir in deiner Situation nicht entgehen lassen.

    Gerade als Lernender sind solche Bemühungen essentiell.
    Schnelle Lösungen kopieren mag dem Zeitgeist entsprechen, sind aber keine Grundlage für das künftige Arbeitsleben.

    Gruß Wolfgang
     
  11. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  12. larry

    larry Tripel-As

    Dabei seit:
    27.11.2007
    Beiträge:
    159
    Zustimmungen:
    0
    Davor noch ein set und es passt alles.
     
  13. #11 doncapo, 06.01.2009
    doncapo

    doncapo Grünschnabel

    Dabei seit:
    05.01.2009
    Beiträge:
    6
    Zustimmungen:
    0
    Sow, habs nun hinbekommen. Hatte das gestern nicht geschnallt. Mittlerweile isses mir aba klar, sowas habe ich bereits vorher in der Uni behandelt, nur war es entfallen.

    Das Ganze schuat nun so aus:

    Code:
    #! /bin/csh
    # Usage: source count $arg1
    
    set var = $argv[1]
    set errors = 'Die Datei existiert nicht oder ist leer'
    if (`filetest -e $var` || `filetest -z $var`) then
       set file = `cat $var`
       set chars = (a b c)
       foreach i ($chars[*])
          cat $var | wc -c | grep $i # (1
       end
    else 
       echo "Fehler: $errors[1]!"
    endif
    
    Kann mir jemand verraten wie ich das Abzählen der Buchstaben realisieren kann? Mir will da leider nichts einfallen. Wühle schon die ganze Zeit in meinen Unterlagen - ohne Erfolg.

    Danke im Voraus!
     
Thema: Testdatei in Variable einlesen
Besucher kamen mit folgenden Suchen
  1. linux variablen in eine datei

    ,
  2. bash ganze datei in variable

    ,
  3. bash datei in variable

    ,
  4. shellscript datei einlesen,
  5. bash dateiinhalt in variable
Die Seite wird geladen...

Testdatei in Variable einlesen - Ähnliche Themen

  1. Linux 4.5 will UEFI-Variablen besser schützen

    Linux 4.5 will UEFI-Variablen besser schützen: Das Löschen bestimmter UEFI-Variablen kann manche Rechner nicht mehr startbar machen. Das kommende Linux 4.5 ergreift Maßnahmen dagegen, die im...
  2. Wie komme ich an den Inhalt des Inhalts einer Variable?

    Wie komme ich an den Inhalt des Inhalts einer Variable?: Hallo Zusammen, ich möchte meine Buildumgebung vereinfachen und besser zu automatisieren. Ein Skript schreibt Pfade in die env und diese...
  3. Textdatei zeilenweise in durchnummerierte Variablen schreiben

    Textdatei zeilenweise in durchnummerierte Variablen schreiben: Hi Leute, ich versuche folgendes Problem zu lösen. Ich möchte eine Textdatei einlesen und den Inhalt jeder Zeile in immer eine neue Variable...
  4. mysql Select Abfrageergebnis in unterschiedlichen Variablen sichern

    mysql Select Abfrageergebnis in unterschiedlichen Variablen sichern: Hallo zusammen, es geht um folgenden Teil meiner .sh-Datei: NumberCheck=`mysql $SQL_ARGS "SELECT lkw, Firma FROM adb_group WHERE...
  5. Teil einer Variablen auslesen und in neue Variable schreiben

    Teil einer Variablen auslesen und in neue Variable schreiben: Hallo, ist für Euch bestimmt ganz einfach, aber trotz googlen komme ich nicht auf eine Lösung. In Variable x habe ich stehen: xy,ab Nun möchte...