|
| 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.
| |
|
|