[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: BASH: Sonderzeichen maskieren...



Am Donnerstag, den 03.02.2005, 20:55 +0100 schrieb Christian Knoke:
> On Thu, Feb 03, 2005 at 08:28:00PM +0100, Markus Schulz wrote:
> > Am Donnerstag, 3. Februar 2005 20:23 schrieb Christian Knoke:
> > > On Thu, Feb 03, 2005 at 07:19:18PM +0100, Thorsten Buss wrote:
> > > > Wenn ich zb diesen hier mache, und Dateien mit Blanks in dem
> > > > aktuellen Verz dann geht das nicht...
> > > >
> > > >   for i in `find`; do cp $i /tmp; done
> > >
> > > *So* geht das grundsätzlich nicht in bash. Der in-Parameter wird
> > > *immer* an Spaces aufgetrennt, und das kannst Du auch nicht
> > > abschalten.
> > 
> > mittels Setzen der IFS Variable sollte sich das aber auf jeden anderen 
> > Trenner ändern lassen iirc.
> 
> Jo, siehe word splitting in man bash.
> 
> chris@karl:~$ a="1 2 3 4\ 5"
> chris@karl:~$ for i in $a ; do echo $i; done
> 1
> 2
> 3
> 4\
> 5
> chris@karl:~$ export IFS=""
> chris@karl:~$ for i in $a ; do echo $i; done
> 1 2 3 4\ 5
> chris@karl:~$ 
> 
> Das wird aber nicht im Sinne des OP sein :)

Richtig, deshalb:

------------schnipsel-------------------
IFS_OLD="$IFS"
IFS="
"
# Die zweite Gaensefüschen müssen alleine in der Zeile stehen!!!!!!!!!!!!
# IFS ist jetzt vorruebergehend ein Zeilenumbruchzeichen!!!!!!!"

for i in `find`; do cp $i /tmp; done
# oderwasauchimmer

# Hier wird IFS wieder auf den orginal Wert zurueck gesetzt!
IFS="$IFS_OLD"
------------schnapsel-------------------

Dann funktioniert das und es klappt auch mit dem OP;-)


-- 
mfg Peter Küchler

To be is to do
Socrates
        To do is to be
        Satre
                Do be do be do
                Sinatra



Reply to: