ubuntuusers.de

Bash und Problem

Status: Gelöst | Ubuntu-Version: Ubuntu 12.04 (Precise Pangolin)
Antworten |

Lae6ge6k

Anmeldungsdatum:
19. Februar 2013

Beiträge: 566

Mit folgendem Bash

1
2
3
4
5
6
7
#!/bin/bash
date "+%d/%m/%y"
ziel2=date "+%d"+1
Unterordner=date '+%d'+1
ziel=${"/home/internet/Arbeitsfläche/Programmieren-quellcode/C++ output/Datei/Datei/2013/Dezember/"+$ziel2}
echo "$message" 
mkdir -p -v $ziel2/{$Unterordner,lot} 

möchte ich einen/mehrere Unterordner herstellen. Aber funktioniert nicht. Ich bräuchte dabei hilfe. Wie macht man das richtig?

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Du möchtest Dir das Bash-Tutorial angucken, glaube ich, und darin insbesondere die Variablenzuweisung ... 😉

Und bei date hilft Dir mit Sicherheit man date weiter, so wie in diesem Beispiel.

Denk bitte unbedingt an korrektes "quoten", damit Du nicht beim ersten Leerzeichen im Dateipfad Dein blaues Wunder erlebst !

LG,

track

Lae6ge6k

(Themenstarter)

Anmeldungsdatum:
19. Februar 2013

Beiträge: 566

/home/internet/Arbeitsfläche/3Dez.sh: Zeile 3: +%d+1: Kommando nicht gefunden.
/home/internet/Arbeitsfläche/3Dez.sh: Zeile 5: +%d+1: Kommando nicht gefunden.
/home/internet/Arbeitsfläche/3Dez.sh: Zeile 6: ${"/home/internet/Arbeitsfläche/Programmieren-quellcode/C++ output/Datei/Datei/2013/Dezember/"+$ziel2}: Falsche Variablenersetzung.

mkdir: das Verzeichnis »/lot“ kann nicht angelegt werden: Keine Berechtigung

Jetzt habe ich mein Bash nochmal geändert, siehe folgenden Bashcode

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#!/bin/bash
date "+%d/%m/%y"
echo "$date" 
ziel2=date "+%d"+1
echo "$ziel2" 
Unterordner=date '+%d'+1
echo "$Unterordner" 
ziel=${"/home/internet/Arbeitsfläche/Programmieren-quellcode/C++ output/Datei/Datei/2013/Dezember/"+$ziel2}

echo "$ziel" 

mkdir -p -v $ziel2/{$Unterordner,lot} 
12:33:08 internet > '/home/internet/Arbeitsfläche/3Dez.sh' 
05/12/13

/home/internet/Arbeitsfläche/3Dez.sh: Zeile 4: +%d+1: Kommando nicht gefunden.

/home/internet/Arbeitsfläche/3Dez.sh: Zeile 6: +%d+1: Kommando nicht gefunden.

/home/internet/Arbeitsfläche/3Dez.sh: Zeile 8: ${"/home/internet/Arbeitsfläche/Programmieren-quellcode/C++ output/Datei/Datei/2013/Dezember/"+$ziel2}: Falsche Variablenersetzung.

mkdir: das Verzeichnis »/lot“ kann nicht angelegt werden: Keine Berechtigung

Ich weiss einfach nicht weiter.

g123

Avatar von g123

Anmeldungsdatum:
5. November 2007

Beiträge: 490

1
ziel2=date "+%d"+1

Meinst du folgendes?

1
ziel2=$[`date "+%d"`+1]
1
Unterordner=date '+%d'+1

Das ist doch das gleiche wie ziel2.

1
ziel=${"/home/internet/Arbeitsfläche/Programmieren-quellcode/C++ output/Datei/Datei/2013/Dezember/"+$ziel2}

Warum benutzt du hier Parameter Substitution? Meinst du vielleicht einfach folgendes?

1
ziel="/home/internet/Arbeitsfläche/Programmieren-quellcode/C++ output/Datei/Datei/2013/Dezember/$ziel2"
1
echo "$message" 

Die Variable $message existiert doch gar nicht.

1
mkdir -p -v $ziel2/{$Unterordner,lot}

Hier legst du zwei Ordner im Arbeitsverzeichnis an: "$ziel2/$Unterordner" und "$ziel2/lot" ?

Aus dem Skript wird mir nicht so richtig klar, was du überhaupt erreichen willst.

Lae6ge6k

(Themenstarter)

Anmeldungsdatum:
19. Februar 2013

Beiträge: 566

Mit folgendem Bash

#!/bin/bash

date "+%d/%m/%y"

ziel2=date "+%d"+1

Unterordner=date '+%d'+1

ziel=${"/home/internet/Arbeitsfläche/Programmieren-quellcode/C++ output/Datei/Datei/2013/Dezember/"+$ziel2}

echo "$message"

mkdir -p -v $ziel2/{$Unterordner,lot}

> möchte ich einen/mehrere Unterordner herstellen.

Mein Ziel ist unterstrichen!

g123

Avatar von g123

Anmeldungsdatum:
5. November 2007

Beiträge: 490

ANDREAS 1967 schrieb:

> möchte ich einen/mehrere Unterordner herstellen.

Mein Ziel ist unterstrichen!

Das du irgendwelche Ordner erstellen willst habe ich schon mitbekommen. Da der Skript aber keinen Sinn macht, ist mir nicht klar, welche Ordner das überhaupt sein sollen.

Lae6ge6k

(Themenstarter)

Anmeldungsdatum:
19. Februar 2013

Beiträge: 566

Die Ordner die ich in meinem Skript erwähnt habe, haben nur für mich ein Bedeutung, und sind Austauschbar?! Die ordnernamen sind also folgende >>>

"/home/internet/Arbeitsfläche/Programmieren-quellcode/C++ output/Datei/Datei/2013/Dezember/"
Unterordner,lot

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

ANDREAS 1967 schrieb:

Jetzt habe ich mein Bash nochmal geändert, siehe folgenden Bashcode

... ähm, aber meine Links hast Du Dir nicht angeguckt, oder ? - sonst würdest Du Deine "Befehlssubstitution" nämlich korrekt und sinnvoll schreiben, z.B. als:

1
2
3
4
#!/bin/bash
datum=$( date "+%d/%m/%y" )
echo "$datum" 
...

Du solltest Dich wohl doch mal ins Thema einlesen und nicht hartnäckig bei Deinem falschen Code bleiben ...

LG,

track

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13219

ANDREAS 1967 schrieb:

> möchte ich einen/mehrere Unterordner herstellen.

Mein Ziel ist unterstrichen!

Ja, das ist schon klar. Hast Du denn nun mal den Link und die Hinweise verfolgt, die Dir track gegeben hat? Wenn nicht, bitte machen.

Außerdem müsstest Du mal herauslassen, wie denn die Verzeichnisse zu benennen sind. Aus Deinem Code ist das, jedenfalls für mich, nicht so ohne weiteres herauszulesen.

Ciao

robert

Lae6ge6k

(Themenstarter)

Anmeldungsdatum:
19. Februar 2013

Beiträge: 566

Jetzt habe ich mein Skript nocheinmal geändert, siehe folgendes >>>

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
#!/bin/bash
date "+%d/%m/%y"
ziel2=$[`date "+%d"`+1]

datum=$( date "+%d" )+1
echo "$datum" 
echo "$date" 

echo "$ziel2" 

echo "$Unterordner" 
ziel="/home/internet/Arbeitsfläche/Programmieren-quellcode/C++ output/Datei/Datei/2013/Dezember/"

echo "$ziel" 

mkdir -p -v $ziel/{$datum,lot} 

aber der output ist falsch >>>

13:35:24 internet > '/home/internet/Arbeitsfläche/3Dez.sh' 
05+1

6

/home/internet/Arbeitsfläche/Programmieren-quellcode/C++ output/Datei/Datei/2013/Dezember/
mkdir: Verzeichnis »output“ angelegt
mkdir: Verzeichnis »output/Datei“ angelegt
mkdir: Verzeichnis »output/Datei/Datei“ angelegt
mkdir: Verzeichnis »output/Datei/Datei/2013“ angelegt
mkdir: Verzeichnis »output/Datei/Datei/2013/Dezember“ angelegt
mkdir: Verzeichnis »output/Datei/Datei/2013/Dezember//05+1“ angelegt
mkdir: Verzeichnis »output/Datei/Datei/2013/Dezember//lot“ angelegt

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Was soll das, den Code sinnlos und "wild" zu ändern, aber die entscheidenden Links, die ich Dir gegeben habe einfach zu ignorieren ??
Willst Du uns ärgern , oder hast Du "alles im Griff" ??

Noch einmal: lies Dir bitte man date durch, insbesondere die Geschichte mit der Option "-d" !
(Vergiss den Code mit eckigen Klammern von g123, das ist Blödsinn. → nimm das, was das Wiki empfiehlt.)
Dann wird das nämlich sowas:

date -d +1day

track

Dominik_Schuster

Anmeldungsdatum:
19. September 2013

Beiträge: 122

Hi,

also fassen wir mal zusammen:

Du willst

1. Einen oder mehrere Ordner mit einer festdefinierten Variable erstellen

2. Diesem Ordner ein (erstell) Datum beifügen?

3. Das ganze mit einem "aufwendigen" Script machen weil du das öfter machen willst?

Danke schon mal im Vorraus für mehr Infos 😛

PS: An Track Ich glaub ihr findet nicht mehr zusammen 😉

Mfg,

Dominik

Lae6ge6k

(Themenstarter)

Anmeldungsdatum:
19. Februar 2013

Beiträge: 566

Einen besonderen Dank an Dominik Schuster Du hast mich schon verstanden.

Das ganze mit einem "aufwendigen" Script machen weil du das öfter machen willst?

Jawohl, und zwar täglich.

Die Punkte 1 bis 3 kann ich bestätigen. Weil die kommen meinen Neigungen (Wünsche) entgegen.

Dominik_Schuster

Anmeldungsdatum:
19. September 2013

Beiträge: 122

So falls du das täglich machen willst dann könnte ich dir Cron empfehlen. Da kannst du dann den Pfad deines Scriptes angeben und dann wird es zu einem selbst definierten Zeitpunkt ausgeführt.

Mfg,

Dominik

Lae6ge6k

(Themenstarter)

Anmeldungsdatum:
19. Februar 2013

Beiträge: 566

Dominik Schuster

...cron

ist schon richtig. Aber den einzurichten ist ein anderes Thema.


Und die Skript's, siehe oben, funktionieren nicht so wie die es sollten.

Antworten |