Anzeige:
Ergebnis 1 bis 4 von 4

Thema: Werte aus einer Liste fortlaufend in befehl einsetzen

  1. #1
    Registrierter Benutzer
    Registriert seit
    Apr 2014
    Beiträge
    69

    Werte aus einer Liste fortlaufend in befehl einsetzen

    Hallo,

    ich habe hier ein Problem, das sich leider nicht einmal benennen und daher auch nicht gezielt danach suchen kann. Angenommen ich habe eine Liste mit Werten

    Code:
    1
    2
    3
    4
    Diese sollen nun der Reihen nach in einem Befehl eingefügt werden. Das Ergebnis soll z. B. so aussehen
    Code:
    echo 1 2 3 4
    Das ganze soll aber auch funktionieren wenn die Liste nur 2 oder auch 10 Werte hat oder wenn dazwischen Zahlen fehlen (es also keine logische Reihe ist, weswegen einfach hinzuaddieren von 1 nicht geht). Die Reihenfolge ist immer die gleiche. Sowas wie

    Code:
    echo 1 3 2 4
    soll nicht vorkommen. Ich habe nur die Möglichkeit gefunden per For-Schleife die Werte der Liste nacheinander abzuarbeiten, das ergibt aber
    Code:
    echo 1
    echo 2
    echo 3
    Ich bitte um Vorschläge? Läuft es darauf hinaus, dass man sich den Befehl in mehreren Durchläufer einer For-Schleife zusammenbaut? Eine For-Schleife die x mal durchläuft wobei x die Anzahl der Einträge ist und dann zunächst 'echo 1' erstellt, im 2. durchlauf diesen um '2' zu 'echo 1 2' ergänzt usw.?
    Geändert von Alter Schwede (15.03.18 um 21:16 Uhr)

  2. #2
    Registrierter Benutzer
    Registriert seit
    Dec 2003
    Ort
    Dettenhausen
    Beiträge
    22.046
    Code:
    echo $(cat $datei)
    Ich bin root - ich darf das.

  3. #3
    Registrierter Benutzer
    Registriert seit
    Apr 2014
    Beiträge
    69
    Ok, mein Bsp, war sub-optimal.

    Ich möchte nicht einfach die zahlen aneinanderreihen sondern z. b. aks Parameter einfügen.

    Code:
    befehl -i 1 -i 2 -i 3

  4. #4
    Universaldilletant Avatar von fork
    Registriert seit
    Dec 2001
    Ort
    Frankfurt/Main
    Beiträge
    1.175
    Wenn Du das mit xargs für beliebig viele Argumente(bzw. so viele, wie halt mit der max. Befehlslänge eben möglich sind) variabel ausführen möchtest, könntest Du das mit einem kleinen Wrapper-Shellscript machen(Habe ich mir gerade zusammen gegoogelt):

    Code:
    cat datei | xargs wrapper.sh
    wrapper.sh
    Code:
    #!/bin/bash
    
    function join_by { 
        local delimiter="$1"
        shift
        echo -n "$1"
        shift
        printf "%s" "${@/#/$delimiter}"
    }
    
    # Wir brauchen mindestens einen Parameter und beenden uns still und leise, wenn's keinen gibt.
    [ $# -lt 1 ] && exit 0
    
    delim=" -i "
    
    deinbefehl "$delim" $(join_by "$delim" "$@")
    Geändert von fork (16.03.18 um 12:41 Uhr)

Ähnliche Themen

  1. Dateien in einer liste kopieren
    Von CommanderZed im Forum Linux Allgemein
    Antworten: 3
    Letzter Beitrag: 10.02.06, 22:30
  2. skript zum abarbeiten einer liste
    Von G-SezZ im Forum Anwendungen Allgemein, Software
    Antworten: 6
    Letzter Beitrag: 21.11.05, 11:30
  3. Zwei Squids auf einer Maschine einsetzen
    Von mullfreak im Forum Router und Netzaufbau
    Antworten: 3
    Letzter Beitrag: 11.10.05, 23:31
  4. Datei fortlaufend an der Konsole ausgeben
    Von schmidtl_dd im Forum Linux Allgemein
    Antworten: 3
    Letzter Beitrag: 11.07.05, 15:48
  5. Liste der installierten Hardware über Bash-Befehl aufrufen
    Von mdkuser im Forum stationäre Hardware
    Antworten: 5
    Letzter Beitrag: 25.07.03, 16:00

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •