← Back to team overview

sslug-teknik team mailing list archive

Re: Makroer i Linux?

 

Rune Christiansen wrote:

> > Ganske stor,  sh er i Linux ofte linket til bash, men csh/tcsh shell
> > er ganske anderledes, så scripts til disse vil normalt ikke virke
> > i bash.
> 
> Hvad er så bedst? Skal jeg skrive hele møget i bash eller hvad?

Brug bash eller sh, det er ofte det samme. Bruger man avancerede
bash-only features, så bør man skrive #!/bin/bash i toppen.

> Men jeg kan godt nøjes med /bin/bash til det hele og så "skrotte" alt
> der hedder noget med sh?

Anvend bash (dvs. skriv /bin/sh i toppen) sålænge du ikke laver
avancerede bash-ting.


> Er begge dele korrekt?:
> 
> echo "min tekst"
>echo min tekst

Ja, i første echo er det en streng "min tekst", i den anden
er det to selvstændige ord.
Prøv med alle de mellemrum, så vil du opdage forskellen:

 minvar=hej
 echo "min     tekst $minvar"
 echo 'min     tekst $minvar'
 echo min    tekst $minvar

> 
> minvar="hej"
> minvar=hej

så længe der et et et-ords tekststreng, så er de ens, ellers f.eks.:

  minvar="hej med dig"    # ok
  minvar=hej med dig      # giver fejl

> Hvad med dette:
> 
> > if [ "$minvar" = "hej" ]
> 
> Hvilket formål tjener de mellemrum?

Jeg sætter dem konsekvent. "[" er det samme som "test" kommandoen,
prøv "man test".

> ll -i /usr/bin/[ /usr/bin/test
 156606 -rwxr-xr-x   2 root     root        16956 nov  4  1997 /usr/bin/[
 156606 -rwxr-xr-x   2 root     root        16956 nov  4  1997 /usr/bin/test

Som det ses er det samme program, det er et hardlink til samme fil. :)
Og ["$minvar" er ikke samme program som [ 
I bash er det dog vist indbygget så den behøver ikke at kalde et
ekstern program, men princippet er det samme.

I tcsh/csh er syntaksen anderledes, og da er mellemrum ikke 
så betydningsfuld.


-- 
mvh Frank Damgaard  frda@xxxxxxxxxxxxx | frank@xxxxxxxx |fido  2:236/15.2


Follow ups

References