/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
emit i mkinitrd
Fra : Ukendt


Dato : 12-01-06 21:53

Jeg undrer mig lidt over emit funktionen i mkinitrd på Fedora Core 4.90:

emit()
{
NONL=""
if [ "$1" == "-n" ]; then
NONL="-n"
shift
fi
echo $NONL "$@" >> $RCFILE
}

Hvorfor så kompliceret? Kunne man ikke blot have skrevet:

emit()
{
echo "$@" >> $RCFILE
}

--
Kasper Dupont -- Rigtige mænd skriver deres egne backupprogrammer
#define _(_)"d.%.4s%."_"2s" /* This is my new email address */
char*_="@2kaspner"_()"%03"_("4s%.")"t\n";printf(_+11,_+6,_,6,_+2,_+7,_+6);

 
 
Stig H. Jacobsen (13-01-2006)
Kommentar
Fra : Stig H. Jacobsen


Dato : 13-01-06 18:02

On Thu, 12 Jan 2006 21:53:29 +0100, Kasper Dupont wrote:

> Hvorfor så kompliceret? Kunne man ikke blot have skrevet:
>
> echo $NONL "$@" >> $RCFILE

Her får echo 2 argumenter (argv[0-1]), hvis -n bruges.

> echo "$@" >> $RCFILE

Her får echo altid kun ét argument (argv[0]) og hvis argumentet
starter med '-n', så vil echo forsøge at fortolke hele argv[0]
som options - der kommer så sikkert fejlmeddelelser om ugyldige
argumenter.

--
Stig

Kent Friis (13-01-2006)
Kommentar
Fra : Kent Friis


Dato : 13-01-06 20:27

Den Fri, 13 Jan 2006 17:01:32 +0000 (UTC) skrev Stig H. Jacobsen:
> On Thu, 12 Jan 2006 21:53:29 +0100, Kasper Dupont wrote:
>
>> Hvorfor så kompliceret? Kunne man ikke blot have skrevet:
>>
>> echo $NONL "$@" >> $RCFILE
>
> Her får echo 2 argumenter (argv[0-1]), hvis -n bruges.
>
>> echo "$@" >> $RCFILE
>
> Her får echo altid kun ét argument (argv[0]) og hvis argumentet
> starter med '-n', så vil echo forsøge at fortolke hele argv[0]
> som options - der kommer så sikkert fejlmeddelelser om ugyldige
> argumenter.

Bemærk at der står "$@" og IKKE "@*".

Mvh
Kent
--
Hard work may pay off in the long run, but laziness pays off right now.

Peter Makholm (13-01-2006)
Kommentar
Fra : Peter Makholm


Dato : 13-01-06 20:44

Kasper Dupont <87482685378783384155@expires.23.feb.2006.kasperd.net.invalid> writes:

> emit()
> {
> NONL=""
> if [ "$1" == "-n" ]; then
> NONL="-n"
> shift
> fi
> echo $NONL "$@" >> $RCFILE
> }
>
> Hvorfor så kompliceret?

Jeg overvejer lidt om det skulle være et forsøg på at få echo til at
skrive noget ud der begynder med '-n'. Nogen der kan det?

Det er ikke noget problem at få den til at skrive en linje der
begynder med ' -n', men ikke uden et mellemrum.

--
Peter Makholm | What if:
peter@makholm.net | Tanenbaum had convinced Linus that his
http://hacking.dk | operating system really was obsolete

Klaus Ellegaard (13-01-2006)
Kommentar
Fra : Klaus Ellegaard


Dato : 13-01-06 21:03

Peter Makholm <peter@makholm.net> writes:

>Det er ikke noget problem at få den til at skrive en linje der
>begynder med ' -n', men ikke uden et mellemrum.

Solaris' man-side til echo er meget fornem her:

USAGE
Portable applications should not use -n (as the first argu-
ment) or escape sequences.

The printf(1) utility can be used portably to emulate any of
the traditional behaviors of the echo utility as follows:

o The Solaris 2.6 operating environment or compatible
version's /usr/bin/echo is equivalent to:

printf "%b\n" "$*"

o The /usr/ucb/echo is equivalent to:

if [ "X$1" = "X-n" ]

then

shift

printf "%s" "$*"

else

printf "%s\n" "$*"

fi

New applications are encouraged to use printf instead of
echo.


Mvh.
   Klaus.

Kent Friis (13-01-2006)
Kommentar
Fra : Kent Friis


Dato : 13-01-06 21:25

Den Fri, 13 Jan 2006 20:02:58 +0000 (UTC) skrev Klaus Ellegaard:
> Peter Makholm <peter@makholm.net> writes:
>
>>Det er ikke noget problem at få den til at skrive en linje der
>>begynder med ' -n', men ikke uden et mellemrum.
>
> Solaris' man-side til echo er meget fornem her:
>
>
> o The /usr/ucb/echo is equivalent to:
>
> if [ "X$1" = "X-n" ]
>
> then
>
> shift
>
> printf "%s" "$*"
>
> else
>
> printf "%s\n" "$*"
>
> fi

Ja det ligner jo lidt, men når man skifter printf ud med echo, er
man jo tilbage hvor man startede...

Mvh
Kent
--
Hard work may pay off in the long run, but laziness pays off right now.

Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste