sslug-teknik team mailing list archive
-
sslug-teknik team
-
Mailing list archive
-
Message #07821
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