Shell-Sript unter Linux

Pascal, Basic und andere nicht aufgelistete
Antworten
PrinceTaoLee
Beiträge: 3
Registriert: Di Dez 08, 2015 10:34 am

Shell-Sript unter Linux

Beitrag von PrinceTaoLee » Mi Dez 09, 2015 10:23 pm

Guten Abend zusammen!
Ich belege seit November '15 einen Fernkurs in C/C++ unter Linux und ich habe ein kleines Problem und bin seit 2 Wochen dabei es zu lösen leider vergebens und hoffe nun hier einen kleinen Denkanstoß zu bekommen.
Ich soll ein Shell-Sript schreiben das den Inhalt 2er Dateien beim 1. Aufruf tauscht und beim 2. Aufruf wieder in den Ursprung zurück versetzt. (Bspl. Datei 1 : Dies ist die 1. Bestellung. Datei 2: Dies ist die 2. Bestellung! Nun soll das was in der 1. Datei steht in der 2. Angezeigt werden und umgekehrt!)Die Randbedingungen sind :Nur 2 cp 1 rm und 1 mv Befehl benutzen, und nicht mehr als 6 Zeilen belegen! Und in der 1. und 6. Zeile muss echo stehen! Danke für eure Denkanstöße im Vorraus

P.s.: Ich hoffe ich bin im richtigen Form wenn nicht entschuldigt dies Bitte!

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8721
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Shell-Sript unter Linux

Beitrag von Xin » Do Dez 10, 2015 12:34 am

Interessant, dass man in einem C++-Fernkurs Shell-Skripte schreiben darf. Aber warum nicht.

Nunja... einen Austauschbefehl gibt es nicht. Aber man kann die Datei ja verschieben. Man könnte Datei1 zu Datei3 machen, Datei2 zu Datei1 und Datei3 zu Datei2. So überschreibt man nix. Das wären drei Zeilen. Man könnte die Dateien auch kopieren, dann müsste man Datei3 wieder löschen.
Und in die erste und letzte Zeile ein echo zu schreiben, stört dann wohl auch nicht.

Ich bin nicht ganz sicher, welchen Denkanstoß Du hier brauchst...?
Vielleicht wäre mktemp noch ein Denkanstoß?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

nouseforname
Beiträge: 236
Registriert: Do Feb 10, 2011 6:31 pm

Re: Shell-Sript unter Linux

Beitrag von nouseforname » Do Dez 10, 2015 6:24 am

Lass mich raten.... SGD....C/C++ Programmieren unter Linux. Du hast die Aufgabe aus einem der ersten beiden Hefte. Dort lernt man die Grundlagen für die Linux Shell aka Konsole aka Terminal. Da der gesamte Kurs darauf ausgelegt ist in selbiger zu arbeiten.

Die Aufgabe ist eigentlich ganz einfach, und Du hast bereits alles dazu gesagt. Dein Shell Script soll den Inhalt zweier Dateien vertauschen, oder einfach den Dateinamen, was am Ende auf das gleiche Ergebnis zielt.
Führst Du das Script zweimal mit den gleichen Dateien aus, bist Du wieder am Ausgangspunkt.

Du hast maximal 6 Zeilen zur Verfügung, davon sind 2 für "Echo" belegt. die Restlichen 4 kannst Du also mit den gegebenen Befehlen cp, mv, und rm belegen. Xin hat dazu schon faktisch die Lösung gegeben.
- Kopiere 1 nach 3
- Verschiebe 2 nach 1
- Kopiere 3 nach 2
- Lösche 3

Es geht auch anders und kürzer... viel Spass beim Kurs.

PrinceTaoLee
Beiträge: 3
Registriert: Di Dez 08, 2015 10:34 am

Re: Shell-Sript unter Linux

Beitrag von PrinceTaoLee » Do Dez 10, 2015 8:58 am

Guten morgen!Danke euch für eure Denkanstöße! Und ja ist von Sgd der Fernkurs:-) Macht mir echt spass! Und danke euch nochmal für die Infos!

PrinceTaoLee
Beiträge: 3
Registriert: Di Dez 08, 2015 10:34 am

Re: Shell-Sript unter Linux

Beitrag von PrinceTaoLee » Fr Dez 11, 2015 7:15 pm

Irgendwo hab ich einen Fehler und finde ihn nicht! Das ist zum Haare raufen!
Mein Script sieht im Moment so aus:
echo
cp "$~/home/da1" "$~/home/da3"
mv "$~home/bilder/da2" "$~/home/da1"
cp "$~/home/da3" "$~/home/bilder/da2"
rm "$~/home/da3"
echo
Beim Aufruf mit ./tausch bekomme ich immer: Aufruf mit stat für 》$《~/home/da1 ist nicht möglich Datei oder Verzeichnis nicht gefunden obwohl alles da ist wo es hingehört.
Und ich nur das verwende was ich bisher gelernt habe. Danke euch für eure Unterstützung!

nouseforname
Beiträge: 236
Registriert: Do Feb 10, 2011 6:31 pm

Re: Shell-Sript unter Linux

Beitrag von nouseforname » Fr Dez 11, 2015 7:47 pm

Du machst die Pfadangabe falsch. Mal abgesehen davon dass du nicht den Absolutpfad angeben musst (aber kannst), wird der Pfad zum User-Home erst mit der Tilde "~" begonnen. Die Anführungszeichen kannst Du dir auch sparen sofern du keine Leerzeichen im Pfad hast, was ich tunslichst vermeiden würde.

So sollte es eigentlich funktionieren:

Code: Alles auswählen

cp ~/home/da1 ~/home/da3
Aber wenn Du mit sowas schon so sehr kämpfst wirst Du noch sehr viel Spass haben.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8721
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Shell-Sript unter Linux

Beitrag von Xin » Fr Dez 11, 2015 8:13 pm

PrinceTaoLee hat geschrieben:Irgendwo hab ich einen Fehler und finde ihn nicht! Das ist zum Haare raufen!
Ein Skript macht das gleiche wie Du, wenn Du es in die Konsole schreibst.

Also probiere es ohne Skript aus und wenn Du verstanden hast, wie es funktioniert, dann schreibst Du Dein Skript.

Das $ steht für Variablen. Es folgt der Name der Variablen:

Code: Alles auswählen

echo $HOME
In Skripten kannst Du eigene Variablen belegen, andere sind - wie HOME vorbelegt. Beispielsweise $1 für das erste Argument für das Skript.

Packst Du folgendes in ein Skript

Code: Alles auswählen

echo $1
und gibst "./skript Hallo Welt" ein, druckt das Skript "Hallo", denn Hallo ist das 1. Argument.
Für Pfade brauchst Du $ aber nicht.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten