← Back to team overview

sslug-teknik team mailing list archive

Re: at kommando i et script

 

Ole Kofoed Hansen <ole@xxxxxxxxxxxxxxx> writes:

> OK, jeg var forsigtig, og ville ikke love for meget. Jeg troede ikke
> shellen behandlede et "here doc".

Det er endda specificeret af SUSv3 og altså ikke en
bash-specialitet. Det er i øvrigt en lidt speciel definition:

  If any character in /word/ is quoted, the delimiter shall be formed
  by performing quote removal on /word/, and the here-document lines
  shall not be expanded. Otherwise, the delimiter shall be the /word/
  itself.

(/word/ angiver det der står efter <<)

Altså:
brother@tyge$ cat <<HERE 
> $PATH
> $SHELL
> HERE
/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/brother/bin
/bin/bash
brother@tyge$ cat <<'HERE'
> $PATH
> $SHELL
> HERE
$PATH
$SHELL
brother@tyge$ cat <<HER'E'
> $PATH
> $SHELL
> HERE
$PATH
$SHELL
brother@tyge$ 

Den sidste finder jeg spøjs. Gad vide om der er noget rationale for
ikke at nøjes med at tillade de to første tilfælde? Læg også mårke til
at den ikke skelner mellem 'HERE' og "HERE" som perl for eksempel gør.

-- 
 Peter Makholm     |     If you can't do any damage as root, are you still
 peter@xxxxxxxxxxx |                                          really root?
 http://hacking.dk |                       -- Derek Gladding about SELinux


References