Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » GNU/Linux » bash-Skriptsprache: Problem mit String-Zuweisung

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
02.06.2015, 02:38 Uhr
Yadgar



Hi(gh)!

Ich weiß nicht, ob ich mit meinem Problem hier überhaupt richtig bin... es geht jedenfalls um Folgendes:

Ich möchte ein Skript schreiben, das abhängig von einem eingegebenen Zahlenwert eine bestimmte Bilddatei aus einem übergeordneten Verzeichnis ins aktuelle Verzeichnis kopiert, etwa so:


Code:
echo "Bitte Nummer des Frames eingeben:"
read $frame
$file="../mxboot"${frame}.png
cp $file ./



Aber ich bekomme immer eine Fehlermeldung "Datei oder Verzeichnis nicht gefunden", es geht sogar soweit, dass ich erst gar nicht in der Lage bin, den Inhalt von $file auszugeben - es muss an dem Slash im String liegen! Wie bekomme ich den maskiert? Oder gibt es irgendeine andere Art und Weise, einen Verweis auf das nächsthöhere Verzeichnis in einem String anzugeben?

Bis bald im Khyberspace!

Yadgar
--
Flagmaker - ein Programmier-Blog

Dieser Post wurde am 02.06.2015 um 17:44 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
02.06.2015, 11:48 Uhr
ao

(Operator)



Code:
#! /bin/bash

echo "Bitte Nummer des Frames eingeben:"
read frame
file="../mxboot${frame}.png"
echo "file is $file"

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
02.06.2015, 23:38 Uhr
Yadgar




Zitat von ao:

Code:
#! /bin/bash

echo "Bitte Nummer des Frames eingeben:"
read frame
file="../mxboot${frame}.png"
echo "file is $file"




Danke für den Tipp...ich hatte wohl noch zuviel PHP im Hinterkopf!

Aber jetzt türmt sich gleich das nächste Problem vor mir auf:


Code:
# avgfilm
# Generates movies from averaged frames
# `

echo "Nummer des ersten Frames:"
read fframe
echo "Anzahl der zu mittelnden Frames:"
read avgfrm
lframe=$((fframe+avgfrm-1))
echo "Letzter zu mittelnder Originalframe für den ersten neuen Frame: $lframe"
c=1
while [ $c < $fframe ]
do
c=$((c\*10))
done
echo "c = $c"



Bis zur while-Schleife läuft alles einwandfrei - aber dann bekomme ich die Fehlermeldung:

Zeile 14: c\*10: Syntaxfehler: Ungültiger arithmetischer Operator. (Fehlerverursachendes Zeichen ist \"\*10\").

Wieso? Ich dachte, Asteriske müssten mit Backslash maskiert werden, um als Multiplikations-Operator (und nicht als Wildcard) interpretiert zu werden?

Bis jetzt ist mir noch keine Programmiersprache untergekommen, wo die Lernkurve derart steil ist - es klappt ja buchstäblich überhaupt nichts auf Anhieb! Oder werde ich langsam dement?

Bis bald im Khyberspace!

Yadgar
--
Flagmaker - ein Programmier-Blog
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
04.06.2015, 10:10 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


hi,
naja dadurch das du mit $(()) in den "arithmetik-modus" (ich nenn das mal jetzt so) schaltest, darfst du auch das * nicht escapen. d.h c*10 funktioniert, c\*10 nicht!
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
04.06.2015, 10:57 Uhr
Yadgar



Hi(gh)!


Zitat von FloSoft:
hi,
naja dadurch das du mit $(()) in den "arithmetik-modus" (ich nenn das mal jetzt so) schaltest, darfst du auch das * nicht escapen. d.h c*10 funktioniert, c\*10 nicht!


Wenn ich das * nicht escape, bekomme ich eine Fehlermeldung für Zeile 12: cannot open 70: No such file
wobei "70" die als erstes eingegebene Zahl ist! Was soll das?!?

Bis bald im Khyberspace!

Yadgar
--
Flagmaker - ein Programmier-Blog

Dieser Post wurde am 04.06.2015 um 11:00 Uhr von Yadgar editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
04.06.2015, 13:11 Uhr
Yadgar



Hi(gh)!

[Ingrid]


Zitat von Yadgar:

Wenn ich das * nicht escape, bekomme ich eine Fehlermeldung für Zeile 12: cannot open 70: No such file
wobei "70" die als erstes eingegebene Zahl ist! Was soll das?!?



Dass > und < in Bashistani normalerweise nicht für logische Operatoren, sondern für Aus- und Eingabeumleitungen stehen, hätte ich eigentlich wissen müssen... mittlerweile habe ich nochmal Mut gefasst und mir auf Anraten meines Herzkönigs ein paar YouTube-Tutorials reingezogen (obwohl ich ja eigentlich mehr ein Fan von konventionellen Lehrbüchern bin)... aber die Lektionen von Madhur "The Bad Tutorials" sind wirklich gut!)...

Also, der "Operator" (tatsächlich wohl eher externes Programm) heißt für "kleiner als" -lt und für "größer als" -gt - jetzt klappt das, was ich vorhabe, nämlich die Stellenanzahl einer eingegebenen Integer-Zahl zu ermitteln:


Code:
c=1
i=0
while [ $c -lt $fframe ]
do
  c=$((c*10))
  i=$((i+1))
done
echo "i = $i"



Bis bald im Khyberspace!

Yadgar

[/Ingrid]
--
Flagmaker - ein Programmier-Blog
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ GNU/Linux ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: