variable

Powershell Variablen schützen

Written by  on Juli 17, 2016

Weiß jemand, wann sich das Verhalten von Powershell verändert hat? Ich habe in ein paar älteren Scripten Abschnitte ähnlich wie

$X="blabla"
write-output "$X"

Hängt man im Output jetzt einen Doppelpunkt an, passiert auf Windows 2012 R2:

write-output "$X:"
In Zeile:1 Zeichen:15
+ write-output "$X:"
+               ~~~
Ungültiger Variablenverweis. Nach ":" folgte kein Zeichen, das für einen Variablennamen gültig ist. Verwenden Sie ggf.
"${}", um den Namen zu begrenzen.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : InvalidVariableReferenceWithDrive

Die Lösung ist einfach:

write-output "${X}:"

Aber warum sich das Verhalten auf einmal ändert ist unklar.

Download a Variable with PHP

Written by  on April 12, 2016

You have a variable in php which should get into a file for download. But you don’t want to put it actually into a file? Then call the following script which does exactly that for you:

$filename=htmlspecialchars($_GET["name"]);
$content=$_GET['content'];
header("Content-type: text/plain");
header("Content-Disposition: attachment; filename=$filename");
echo("$content");

Bash: Variablen Bearbeiten

Written by  on September 24, 2015

Die Bash kann einiges mit Variablen anstellen, was man in vielen Scripten relativ kompliziert gelöst sieht.

Ein Beispiel, das in vielen Scripten vorkommt: Eine Ausgabedatei soll genau so heißen wie die Eingabedatei, aber eine andere Erweiterung haben.

A="test.txt"
B="${A%%.txt}.csv"

Was steht jetzt in Variable B?

echo $B
test.csv

Wie funktioniert das?
Mit dem ‚%‘-Operator kann man von einer Variable Zeichen vom Ende her löschen.
Mit ‚%%‘ werden auch mehrere Vorkommen der Variable vom Ende her gelöscht.

Vom Anfang her löschen geht mit ‚#‘

Ersetzen ähnlich wie mit sed geht über den ‚/‘-Operator, ‚^‘ und ‚,‘ machen Groß- bzw. Kleinbuchstaben.

Schöne Beispiele dazu finden sich im Web z.B. beim Linuxmagazin.

Näheres dazu ist unter dem Suchbegriff „Parameter Expansion“ zu finden. Auch in der Manpage von bash.