ubuntuusers.de

Shell-Variable nach Abfrage ergänzen

Status: Gelöst | Ubuntu-Version: Ubuntu 18.04 (Bionic Beaver)
Antworten |

SK-N-BE

Anmeldungsdatum:
14. Juni 2018

Beiträge: 120

Hallo ich schreibe gerade ein Shell Skript für bioinformatische Analysen.

Um die Analysen für ein Projekt korrekt durchführen zu können, müssen folgende Variablen und die Anzahl an Proben im Skript ergänzt werden:

1
2
3
LAUF="Lauf-ID"
ID="Projekt-ID"
ANZAHL_PROBEN=(1 2 3)

Ich muss also vor der Analyse das Skript öffnen und dann dort jeweils die drei Punkte ergänzen. Damit die ganze Pipeline nicht mit den falschen Proben durchgeführt wird (weil z.B. noch immer die Projekt-ID des Projektes davor im Skript steht), habe ich zu Anfang eine Abfrage generiert:

1
2
3
4
5
6
7
8
9
#Abfrage "Wurde die ID des Laufs ergänzt"?
while true; do
    read -p "Wurde die ID des Laufs ergänzt?" yn
    case $yn in
        [Yy]* ) break;;
        [Nn]* ) echo "Bitte die ID des Laufs ergänzen"; exit;;
        * ) echo "Please answer yes or no.";;
    esac
done

Mit demselben Muster wird dann auch noch gefragt, ob die Projekt-ID und die Anzahl an Proben ergänzt wurden bevor die eigentlichen bioinformatischen Analysen durchgeführt werden.

Nun zu meiner Frage: Anstatt vorher das Skript zu ergänzen, würde ich als ersten Teil gerne abfragen, was die Lauf-ID bzw. Projekt ID und die Anzahl an Proben ist, sodass ich vor Ausführung des Skriptes nichts mehr abändern und speichern muss.

D.h. es sollte dann in etwa so aussehen:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
"Bitte Lauf-ID angeben"
#hier muss dann die Lauf-ID in die Shell eingegeben werden wie z.B.:
ABC12345
echo Die Lauf-ID lautet $LAUF  
#nach Eingabe der Lauf-ID ABC12345 ist dann LAUF="ABC12345" im Skript ergänzt worden

"Bitte Projekt-ID angeben"
#hier muss dann die Projekt ID in die Shell eingegeben werden wie z.B.:
DEF2019-1
echo Die Projekt-ID lautet $ID
#nach Eingabe der Projekt-ID ist dann ID="DEF2019-1" im Skript ergänzt worden

"Bitte Anzahl Proben angeben"
#hier muss dann die Anzahl an Proben in die Shell eingegeben werden wie z.B.:
1 2 3 4 5 
echo Die Anzahl an Proben wurde mit ANZAHL_PROBEN=(1 2 3) angegeben
#nach Eingabe der Anzahl ist also ANZAHL_PROBEN=(1 2 3). 

Ich hoffe, dass ihr nachvollziehen könnt, was ich möchte und hoffe, dass ihr mir einen Tipp geben könnt.

SK-N-BE

(Themenstarter)

Anmeldungsdatum:
14. Juni 2018

Beiträge: 120

Moin, mittlerweile habe ich eine Lösung gefunden, die genauso funktioniert, wie ich mir das vorstelle:

1
2
3
read -p "Bitte geben Sie die ID des Laufs ein:" LAUF
read -p "Bitte geben Sie die ID des Projektes ein:" ID
read -p "Bitte geben Sie die Anzahl Proben ein (1 2 3...):" ANZAHL_PROBEN
Antworten |