Sida 1 av 1

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

Postat: 11 mar 2010, 16:54
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

Re: Fråga om variabeltilldelning/perl/bash

Postat: 11 mar 2010, 23:26
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.

Re: Fråga om variabeltilldelning/perl/bash

Postat: 14 mar 2010, 00:17
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