Fråga om variabeltilldelning/perl/bash [LÖST]

Här diskuteras programmering och utveckling
hanssolo
Inlägg: 12
Blev medlem: 08 mar 2010, 00:21
OS: Ubuntu

Fråga om variabeltilldelning/perl/bash [LÖST]

Inlägg av hanssolo »

Hej,

Om man betraktar följande exempel som jag hittat på nätet:

$ password="tjorven"
$ pass=$(perl -e 'print crypt($ARGV[0], "password")' $password)
$ echo $pass

Så dyker det genast upp en fråga i mitt huvud;
perl:s crypt-funktion verkar ta argumenten crypt(pwd, salt)

Men vad gör variabeln $password i detta exempel? Varför står den efter crypt-funktionen i bash:s command substitution? $(blablabla $password)
Krypterar den "tjorven" i detta fall?
Men varför inte ha "tjorven" som första argument till perl-funktionen?

Tacksam för förklaring

/ Hans
Senast redigerad av 2 hanssolo, redigerad totalt 14 gång.
Användarvisningsbild
mcNisse
Inlägg: 5211
Blev medlem: 06 feb 2007, 20:51
OS: Debian
Utgåva: Vet inte/ingen utgåva passar

Re: Fråga om variabeltilldelning/perl/bash

Inlägg av mcNisse »

Hejsan!

Det var ett kul exempel, låt mig göra ett försök.

Kod: Markera allt

$ pass=$(perl -e 'print crypt($ARGV[0], "password")' $password)
$password är första argumenteten till perl skriptet print crypt($ARGV[0], "password"). Det är det som hamnar i $ARGV[0] Det gör "password" till saltet.
Men varför inte ha "tjorven" som första argument till perl-funktionen?
Därför att man vill använda sig av en variabel. Det går utmärkt, att skriva tjorven där du säger. Se bara till att ha fnuttarna rätt...

Här har du ett annat sätt som man kan skriva samma sak.

Kod: Markera allt

pass=$(perl -e "print crypt($password, \"password\")")
Notera att jag har bytt ut fnuttarna och tagit bort ARGV och skrivit password istället i crypt. Det är för att skalet evaluerar variabler innom dubbelfnuttar men inte innom enkelfnuttar.
hanssolo
Inlägg: 12
Blev medlem: 08 mar 2010, 00:21
OS: Ubuntu

Re: Fråga om variabeltilldelning/perl/bash

Inlägg av hanssolo »

Tjena,

Tackar (igen) för din förklaring. Börjar gilla dig riktigt mycket nu. Keep up!
Hade inte tänkt på att betrakta $password som det första argumentet till print-funktionen utan såg det som ett argument (eller iaf något som tillhörde) bash:s kommando-substitution $(perlgrej $password).

/ Hasse
Skriv svar

Återgå till "Programmering och webbdesign"