| neue Message hinzufügen |

Einen habe ich noch.... kili 2017-03-03 22:29:42
Preisfrage: was passiert, wenn man in der Shell (oder in einem Shellscript) mit shift n mehr Parameter rausshiften will, als man tatsaechlich hat? (Das wusste ich bis vor kurzem nicht, und auch keiner meiner Kollegen. und gegen die bin ich quasi ein Unix-Newbie)

Antwort: kommt drauf an.

Genauere Antwort:

In der bash wird nicht geschifted, das shift-Kommando selbst liefert aber einen Exitstatus 1, aber wer fragt nach einem shift shon den Exitstatus ab?

Also:

$ set a b c d; shift 6; echo "$@"

liefert

a b c d

Und in der ksh (zumindest der von OpenBSD, die baisert auf der pdksh):

$ set a b c d; shift 6; echo "$@"

liefert (auf stderr)

ksh: shift: nothing to shift

Das echo "$@" wird hier gar nicht erst ausgefuehrt. Exitcode ist ebenfalls 1, aber die komplette Kommandozeile  (oder, wenn's in einem Script passiert, das komplette Script) wird abgebrochen.

Alles Posix-konform ;-)

Apropos Slashes kili 2017-03-03 22:22:27
Hatte ich zwar gerade schon im Chat erwaehnt, aber hier ist's etwas persistenter..

In einer Posix-konformen Shell *kann* folgendes passieren:

$ cd /tmp; pwd
/tmp
$ cd //tmp; pwd
//tmp
$ cd ///tmp; pwd
/tmp

Warum? Weil Posix sagt, dass mehrere Slashes zu einem komprimiert werden sollten, ausser ganz vorne, da sollten nur drei oder mehr Slashes zu einem gekuerzt werden. Zwei Slashes ganz vorne *duerfen*  Implementationsabhaengig eine Spezialbedeutung haben (haben das wohl auch auf diversen Systemen).

Tolle Wurst.

Madeleine 2017-01-27 11:47:10
Wahrscheinlich anders als Slashes, sonst hätte er die ja auch gefuttert

richtig nobody 2017-01-27 08:46:08
hast Du das messerscharf geschlossen, Madeleine.

Erst nach dem Drücken des "Posten" und "Beitrag anschauen" war ersichtlich, daß der Didi da backslashes frißt. Wie die wohl schmecken?

nobody

off-topic Madeleine 2017-01-26 13:08:49
Wenn es nur das Copy&Paste gewesen wäre, hättest Du das doch schon vor dem Posten sehen können.
Ich nehme eher an, das Forumsposteingabeformular bzw. dessen Verarbeitung hat die Backslashes gefressen.

Karaser 2017-01-25 23:51:03

cool nobody 2017-01-24 16:47:47

ulli 2017-01-24 16:04:23
Du hast recht nobody, da fehlten die Backslashes.
Ich hab das mal zusammengebastelt, als ich noch schlauer war als heute. Das Erzeugungsdatum dieser Datei ist der 21.10.1991. Da gabs noch nicht mal Karopapier.



... wer bastelt denn sowas zusammen? nobody 2017-01-24 15:11:03

ulli, bei Dir auch nobody 2017-01-24 14:39:33
... fehlen ein paar backslashes, die das copy/paste weggefressen hat, es muss heissen:
s=\;; b=\\; h=\'; a='; echo s=$b$s$s b=$b$b$s h=$b$h$s a=$h$a$h$a'; echo s=$b$s$s b=$b$b$s h=$b$h$s a=$h$a$h$a

und hier nun der Befehl nobody 2017-01-24 14:33:17
sed -e 's/\([^\t]*\t[^\t]*\t[^\t]*\)/\1\t/'

nobody 2017-01-24 14:32:12
backslash, zweiter Versuch \

hmmm nobody 2017-01-24 14:31:52
wobei ich grade feststelle, dass mein Befehl durch das copy-paste kaputtging, ich probier es mal, wer hier was wegfrisst:
slash /
backslash  

ulli 2017-01-24 13:42:44
s=;; b=\; h='; a='; echo s=$b$s$s b=$b$b$s h=$b$h$s a=$h$a$h$a'; echo s=$b$s$s b=$b$b$s h=$b$h$s a=$h$a$h$a


Dieser Befehl gibt sich selbst aus. Oder wenn man es als Shellscript schreibt gibt es sich selbst aus.

lustige shell-Befehle nobody 2017-01-24 09:50:36
Mein highlight von vor zwei Wochen:
sed -e 's/([^ ]* [^ ]* [^ ]*)/1 /'

Fügt in eine "tab-separated-columns"-Datei nach der zweiten Spalte ein zusätzliches "tab", sozusagen als neue leere Spalte ein.

| neue Message hinzufügen |
| Anfang | Vorherige | Nächste |

Brought to you by Didi

Letzter Satz im Chat:
nobody (9:03): ?