/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
shellscript og working dir
Fra : Niels Andersen


Dato : 08-07-01 10:59

Jeg sidder lige og roder med et simpelt shell-script, der skal konvertere
tekst-filer til unix-format.
Det kaldes med ét parameter: filnavnet.
Scriptet ligger i '~/bin/', men jeg kører det fra et andet dir. Men når så
står i fx. '~/public_html/' og kalder scriptet med et filnavn som parameter,
så kan den ikke finde filen. Og hvorfor ikke? Fordi "working directory" er
'~/bin/'.

Hvordan kan mit shell-script finde ud af hvilket dir jeg kaldte det fra?
`pwd` og getcwd() siger bare ~/bin...

--
Mvh.

Niels Andersen




 
 
Lars Petersen (08-07-2001)
Kommentar
Fra : Lars Petersen


Dato : 08-07-01 21:51


> Jeg sidder lige og roder med et simpelt shell-script, der skal konvertere
> tekst-filer til unix-format.

hvorfor ikke bare bruge dos2unix ?

> Det kaldes med ét parameter: filnavnet.
> Scriptet ligger i '~/bin/', men jeg kører det fra et andet dir. Men når så
> står i fx. '~/public_html/' og kalder scriptet med et filnavn som
parameter,
> så kan den ikke finde filen. Og hvorfor ikke? Fordi "working directory" er
> '~/bin/'.
>
> Hvordan kan mit shell-script finde ud af hvilket dir jeg kaldte det fra?
> `pwd` og getcwd() siger bare ~/bin...

Hmm dette script, lagt i f.eks. /usr/local/bin kaldt fra /root give "/root":

#!/bin/sh
echo `pwd`

....Mystiskt...

--
-
Lars
http://coder.dk/sohofaq.php - Uofficiel WOL SOHO 77 FAQ
When mailing me, remember there is no truth in my mail!



Niels Andersen (08-07-2001)
Kommentar
Fra : Niels Andersen


Dato : 08-07-01 23:00

"Lars Petersen" <lars@truth.ioflux.net> wrote in message
news:HI327.1559$ae6.99631@news010.worldonline.dk...
> > Jeg sidder lige og roder med et simpelt shell-script, der skal
konvertere
> > tekst-filer til unix-format.
> hvorfor ikke bare bruge dos2unix ?

....kender ikke til noget standard-program der kan løse mit problem, men kan
fornemme at der eksisterer et der hedder "dos2unix". Men:
apt-get install dos2unix'
E: Couldn't find package dos2unix

og mere gider jeg ikke gøre ud af at finde et program der allerede er
lavet... :)
Og man kunne jo også bare:
sed 's/\r\n/\n/g' file.txt > file2.txt
evt. "wrappe" det med et shellscript, så jeg ikke skal huske på det. Dette
shellscript kunne så også "mv" file2.txt tilbage til file.txt.

Men så går der en uge eller måske op til 14 dage, og så skal jeg lave noget
lidt mere avanceret, som ikke bare kan løses på den måde. :)

Altså: Der findes 117 måder at omgå problemet, men nysgerrig som jeg er vil
jeg hellere løse det. :)

- DERFOR!

> > Hvordan kan mit shell-script finde ud af hvilket dir jeg kaldte det fra?
> > `pwd` og getcwd() siger bare ~/bin...
>
> Hmm dette script, lagt i f.eks. /usr/local/bin kaldt fra /root give
"/root":
>
> #!/bin/sh
> echo `pwd`
>
> ...Mystiskt...

Næh, for det er et PHP-relateret problem, derfor spørger jeg her. :)

(I øvrigt ville du opnå det samme ved bare at skrive "pwd" på linje 2...
*s*)

Men jeg er altså ikke den eneste der ser fænomenet?

Jeg fornemmer at det er en "feature" og ikke en "bug", af hensyn til at
include filer relativt til php-filen. Men den går der jo så lidt ged i, når
man fra fil a includer fil b, som så includer fil c. Så skal fil c nemlig
findes relativt til fil a, og det giver ikke den store mening. (Og det gør
min formulering måske heller ikke...*s*)

--
Mvh.

Niels Andersen



Anders Johannsen (08-07-2001)
Kommentar
Fra : Anders Johannsen


Dato : 08-07-01 23:28

Niels Andersen wrote in dk.edb.internet.webdesign.serverside.php:

> Scriptet ligger i '~/bin/', men jeg kører det fra et andet dir. Men når så
> står i fx. '~/public_html/' og kalder scriptet med et filnavn som parameter,
> så kan den ikke finde filen. Og hvorfor ikke? Fordi "working directory" er
> '~/bin/'.

$HTTP_ENV_VARS['path'] er din ven -- og jeg skal spare dig for spydige (omend
velanbragte) kommentarer om at bruge PHP til shellscripting

/A

--
Brug Validator service: http://www.html.dk/validator
- Tast din URL én gang, og validér dokumentet hos 12 validatorer
- Understøtter HTML, CSS og søgemaskineoptimering

Niels Andersen (08-07-2001)
Kommentar
Fra : Niels Andersen


Dato : 08-07-01 23:43

"Anders Johannsen" <not@valid.dk> wrote in message
news:9iamp4$ro2$1@sunsite.dk...
> > Scriptet ligger i '~/bin/', men jeg kører det fra et andet dir. Men når

> > står i fx. '~/public_html/' og kalder scriptet med et filnavn som
parameter,
> > så kan den ikke finde filen. Og hvorfor ikke? Fordi "working directory"
er
> > '~/bin/'.
>
> $HTTP_ENV_VARS['path'] er din ven

$HTTP_ENV_VARS['path'] eksisterer ikke
$HTTP_ENV_VARS['PATH'] indeholder ikke det jeg søger

$HTTP_ENV_VARS['PWD'] er præcist hvad jeg søgte - tak for inspirationen...
:)

Denne linje:
chdir($HTTP_ENV_VARS['PWD']);
nogenlunde øverst i scriptet for den vist til at opføre sig mere "normalt".
:)

> og jeg skal spare dig for spydige (omend
> velanbragte) kommentarer om at bruge PHP til shellscripting

Øhm... Okay...

Jeg kan LIDT bash-scripting. Og jeg kan LIDT Perl. Og jeg kan en MASSE PHP.
Synes du virkelig det er en dårlig ide at skrive shell-scripts i PHP? Især
min situation taget i betragtning.
Man kan godt mærke at det ikke er det, det er lavet til, men det går nu
ganske fint.

--
Mvh.

Niels Andersen



Anders Johannsen (09-07-2001)
Kommentar
Fra : Anders Johannsen


Dato : 09-07-01 00:04

Niels Andersen wrote in dk.edb.internet.webdesign.serverside.php:

> > $HTTP_ENV_VARS['path'] er din ven
>
> $HTTP_ENV_VARS['path'] eksisterer ikke
> $HTTP_ENV_VARS['PATH'] indeholder ikke det jeg søger
>
> $HTTP_ENV_VARS['PWD'] er præcist hvad jeg søgte - tak for inspirationen...
> :)

Ak! Det var det jeg burde have skrevet, men min hukommelse har forrådt mig.

Jeg lavede en i øvrigt en hurtig

% echo "<?php phpinfo() ?>" | php | grep $PWD

fra en obskur sti

> Jeg kan LIDT bash-scripting. Og jeg kan LIDT Perl. Og jeg kan en MASSE PHP.
> Synes du virkelig det er en dårlig ide at skrive shell-scripts i PHP? Især
> min situation taget i betragtning.
> Man kan godt mærke at det ikke er det, det er lavet til, men det går nu
> ganske fint.

Afhængigt af situationen, behøver du heller ikke mere end lidt bash, perl
eller Ruby for at få jobbet gjort. Du anfører selv argumentet for at bruge et
af de nævnte sprog i stedet for PHP.

/A

--
Brug Validator service: http://www.html.dk/validator
- Tast din URL én gang, og validér dokumentet hos 12 validatorer
- Understøtter HTML, CSS og søgemaskineoptimering

Niels Andersen (09-07-2001)
Kommentar
Fra : Niels Andersen


Dato : 09-07-01 09:40

"Anders Johannsen" <not@valid.dk> wrote in message
news:9iaotq$2dr$1@sunsite.dk...
> > Jeg kan LIDT bash-scripting. Og jeg kan LIDT Perl. Og jeg kan en MASSE
PHP.
> > Synes du virkelig det er en dårlig ide at skrive shell-scripts i PHP?
Især
> > min situation taget i betragtning.
> > Man kan godt mærke at det ikke er det, det er lavet til, men det går nu
> > ganske fint.
>
> Afhængigt af situationen, behøver du heller ikke mere end lidt bash, perl
> eller Ruby for at få jobbet gjort. Du anfører selv argumentet for at bruge
et
> af de nævnte sprog i stedet for PHP.

Tjah, de små halv-besværlige ting man ser i PHP bliver langt opvejet af den
underlige syntax i bash (som vist heller ikke var ment som shell-script til
at starte med?), og Perl orker jeg slet ikke at komme rigtigt i gang med.
PHP løser jo opgaven...

Men mine shell-scripts plejer nu også at være en ANELSE mere avancerede end
det her. :)
Og jeg bruger ret ofte PHP-funktioner, som slet ikke findes i bash.

--
Mvh.

Niels Andersen



Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408943
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste