file quoting

30/06/2013 - 18:45 von Ulli Horlacher | Report spam
(shell ist bash)

zz ist ein Programm, das (bestimmte) Dateinamen ausgibt.
Diese sollen direkt weiterverarbeitet werden, also im Stil:

dosomething -with $(zz)

Problem sind nun whitespace im Dateinamen:

framstag@juhu:/tmp: ls -l x*
-rw-r--r-- 1 framstag users 0 Jun 30 18:27 xx
-rw-r--r-- 1 framstag users 0 Jun 30 18:24 x $x
-rw-r--r-- 1 framstag users 0 Jun 30 18:37 x$x

framstag@juhu:/tmp: ls x* | hexdump
00000000:78 78 0A 78 20 24 78 0A 78 24 78 0A
0:x x x $ x x $ x

framstag@juhu:/tmp: zz
xx
x $x
x$x

framstag@juhu:/tmp: ls -l $(zz)
ls: cannot access x: No such file or directory
ls: cannot access $x: No such file or directory
-rw-r--r-- 1 framstag users 0 Jun 30 18:27 xx
-rw-r--r-- 1 framstag users 0 Jun 30 18:37 x$x


Ich kann zwar den output von zz beliebig aendern, aber ich finde nichts, so
dass "dosomething -with $(zz)" funktioniert:

framstag@juhu:/tmp: zz
xx
x\ $x
x$x

framstag@juhu:/tmp: ls -l $(zz)
ls: cannot access x\: No such file or directory
ls: cannot access $x: No such file or directory
-rw-r--r-- 1 framstag users 0 Jun 30 18:27 xx
-rw-r--r-- 1 framstag users 0 Jun 30 18:37 x$x


IFS moechte ich nicht veraendern.

Ullrich Horlacher Informationssysteme und Serverbetrieb
Rechenzentrum IZUS/TIK E-Mail: horlacher@tik.uni-stuttgart.de
Universitaet Stuttgart Tel: ++49-711-68565868
Allmandring 30a Fax: ++49-711-682357
70550 Stuttgart (Germany) WWW: http://www.tik.uni-stuttgart.de/
 

Lesen sie die antworten

#1 Christian Neukirchen
30/06/2013 - 20:23 | Warnen spam
Ulli Horlacher writes:

(shell ist bash)

zz ist ein Programm, das (bestimmte) Dateinamen ausgibt.
Diese sollen direkt weiterverarbeitet werden, also im Stil:

dosomething -with $(zz)



Ohne IFS umzusetzen (wieso eigtl nicht?) fàllt mir nur xargs ein (oder
eine bessere Shell...):

zz | xargs -d '' dosomething -with

Christian Neukirchen http://chneukirchen.org

Ähnliche fragen