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: