bash-variabel till php-skript? [LÖST]

Här diskuteras programmering och utveckling
ubot
Inlägg: 4613
Blev medlem: 04 jan 2008, 14:03
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

bash-variabel till php-skript? [LÖST]

Inlägg av ubot »

Jag problem med variabler i bash kontra php. Jag har ett bash-skript som har ett par variabler. Sedan kör jag en php-fil som en del av bash-skriptet på en rad. Nu vill jag att php-filen ska använda variabler som finns i bash-skriptet. Tex har jag en variabel som heter $url och som innehåller olika webbadresser. Den variabeln vill jag "bollla" över till php-filen så att php-skriptet använder samma variabel som bash-skriptet har skapat. Hur gör man det här, går det öht?
Senast redigerad av 2 ubot, redigerad totalt 8 gång.
andol
Inlägg: 3093
Blev medlem: 31 dec 2007, 00:19
OS: Ubuntu
Utgåva: 23.10 Mantic Minotaur

Re: bash-variabel till php-skript?

Inlägg av andol »

Du kan använda PHP:s funktion getenv() för att läsa miljövariabler du satt i ditt bash-skript.
ubot
Inlägg: 4613
Blev medlem: 04 jan 2008, 14:03
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

Re: bash-variabel till php-skript?

Inlägg av ubot »

andol skrev:Du kan använda PHP:s funktion getenv() för att läsa miljövariabler du satt i ditt bash-skript.
Ok, men hur gör man? Får det inte att fungera, hur för jag in två bash-variabler i min php-fil som jag kör från bash med: php phpfilen.php?
andol
Inlägg: 3093
Blev medlem: 31 dec 2007, 00:19
OS: Ubuntu
Utgåva: 23.10 Mantic Minotaur

Re: bash-variabel till php-skript?

Inlägg av andol »

Kod: Markera allt

#!/bin/bash

IDOL=andol
export IDOL

php foo.php

Kod: Markera allt

#!/usr/bin/php
<?php

echo(getenv("IDOL") . "\n");

?>
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: bash-variabel till php-skript?

Inlägg av Konservburk »

Du kan ha en php-fil som ser ut så här:

Kod: Markera allt

<?
echo $_ENV['var'];
echo $_SERVER['argv'][1];
?>
... som du anropar så här:

Kod: Markera allt

var=hej php test.php san
ubot
Inlägg: 4613
Blev medlem: 04 jan 2008, 14:03
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

Re: bash-variabel till php-skript?

Inlägg av ubot »

Konservburk skrev:Du kan ha en php-fil som ser ut så här:

Kod: Markera allt

<?
echo $_ENV['var'];
echo $_SERVER['argv'][1];
?>
... som du anropar så här:

Kod: Markera allt

var=hej php test.php san
Ok, och om jag vill kasta in två variabler då?
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: bash-variabel till php-skript?

Inlägg av Konservburk »

Det där var två variabler... den ena som miljövariabel och den andra som parameter. Men du kan såklart använda två miljövariabler eller två parametrar istället vilket du nu föredrar...

Kod: Markera allt

<?
echo $_ENV['var1'];
echo $_ENV['var2'];
?>

Kod: Markera allt

var1=hej var2=san php test.php

Kod: Markera allt

<?
echo $_SERVER['argv'][1];
echo $_SERVER['argv'][2];
?>

Kod: Markera allt

php test.php hej san
ubot
Inlägg: 4613
Blev medlem: 04 jan 2008, 14:03
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

Re: bash-variabel till php-skript?

Inlägg av ubot »

Konservburk skrev:Det där var två variabler... den ena som miljövariabel och den andra som parameter. Men du kan såklart använda två miljövariabler eller två parametrar istället vilket du nu föredrar...

Kod: Markera allt

<?
echo $_ENV['var1'];
echo $_ENV['var2'];
?>

Kod: Markera allt

var1=hej var2=san php test.php

Kod: Markera allt

<?
echo $_SERVER['argv'][1];
echo $_SERVER['argv'][2];
?>

Kod: Markera allt

php test.php hej san
Ok, tackar. Jag antar att jag sedan använder variabeln i php-skriptet mha $var där jag vill ha värdet inne i php-skriptet?
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: bash-variabel till php-skript?

Inlägg av Konservburk »

Nej, du använder $_SERVER['argv'][1] eller $_ENV['var'] beroende på om du går via miljövariabler eller om skickar med variablerna som parametrar. Studera mina exempel en gång till.
ubot
Inlägg: 4613
Blev medlem: 04 jan 2008, 14:03
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

Re: bash-variabel till php-skript?

Inlägg av ubot »

Konservburk skrev:Nej, du använder $_SERVER['argv'][1] eller $_ENV['var'] beroende på om du går via miljövariabler eller om skickar med variablerna som parametrar. Studera mina exempel en gång till.
Ok, då förstår jag. Men, går det i php att "spotta ut" variabeln i en funkton såhär: function_name('$_ENV['var'];'); Eller blir det fel?
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: bash-variabel till php-skript?

Inlägg av Konservburk »

ubot skrev:Ok, då förstår jag. Men, går det i php att "spotta ut" variabeln i en funkton såhär: function_name('$_ENV['var'];'); Eller blir det fel?
Det borde snarare bli function_name($_ENV['var']); istället. Du kan annars byta namn på variablerna om du känner för det...

Kod: Markera allt

$var = $_ENV['var'];
ubot
Inlägg: 4613
Blev medlem: 04 jan 2008, 14:03
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

Re: bash-variabel till php-skript?

Inlägg av ubot »

Konservburk skrev:
ubot skrev:Ok, då förstår jag. Men, går det i php att "spotta ut" variabeln i en funkton såhär: function_name('$_ENV['var'];'); Eller blir det fel?
Det borde snarare bli function_name($_ENV['var']); istället. Du kan annars byta namn på variablerna om du känner för det...

Kod: Markera allt

$var = $_ENV['var'];
Ok, då har jag nog fått kläm på det iaf. Jag får se om koden fungerar när jag har kommit längre i mitt skript. Tack för hjälpen så här långt!
ubot
Inlägg: 4613
Blev medlem: 04 jan 2008, 14:03
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

Re: bash-variabel till php-skript?

Inlägg av ubot »

Ok, jag försöker nu att få ett php-skript att använda en variabel från ett bash-skript. Det går inget vidare... Här är min php- och bash-kod:

test.sh:

Kod: Markera allt

#!/bin/bash

url=$(curl -Ls http://example.com)

var=$url php twitter.php
test.php:

Kod: Markera allt

<?php

function getTextBetweenTags($tag, $html)
{
    $pattern = "/<$tag?.*>(.*?)<\/$tag>/";
    preg_match_all($pattern, $html, $matches);
    return $matches[1];   
}

$html = echo $_ENV['var'];

$content = getTextBetweenTags('a', $html);

foreach( $content as $item )
{
    echo $item.'<br />';
}
?>
Jag försöker alltså att slänga in innehållet i variablen $url som variabeln $html mha echo $_ENV['var'];, men det ger felmeddelandet:

Parse error: syntax error, unexpected T_VAR in $HOME/test.php on line 10

Jag ser att variabeln $url innehåller koden till sidan example.com som jag har hämtat mha curl, men sedan går något fel i php-skriptet, antagligen på line 10. :) Jag gör kanske trots allt fel när jag bollar in variabeln i php-skriptet från bash-skriptet?
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: bash-variabel till php-skript?

Inlägg av Konservburk »

Du måste använda funttar om du tänker göra på det sättet...

Kod: Markera allt

var="$url" php twitter.php
Jag föreslår att du använder $html = file_get_contents('http://example.com') i php-skriptet istället.
ubot
Inlägg: 4613
Blev medlem: 04 jan 2008, 14:03
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

Re: bash-variabel till php-skript?

Inlägg av ubot »

Konservburk skrev:Du måste använda funttar om du tänker göra på det sättet...

Kod: Markera allt

var="$url" php twitter.php
Jag föreslår att du använder $html = file_get_contents('http://example.com') i php-skriptet istället.
Ok, men jag kommer inte runt att jag behöver bolla in en variabel eftersom php-skriptet ska använda olika URLs som kommer från ett bash-skript. jag måste alltså på något vis få php-skriptet att använda kod från en URL, vars adress finns i en bash-variabel. Nu testade jag med det här:

Kod: Markera allt

$html = file_get_contents('$_ENV['var'];')
Där url är satt till var=$(echo "URL") i bash-skriptet. Det fungerade inte. Samma felmeddelande som förut.
ubot
Inlägg: 4613
Blev medlem: 04 jan 2008, 14:03
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

Re: bash-variabel till php-skript?

Inlägg av ubot »

Nej, vänta! Nu snurrade jag nog till det rejält. Jag testade med att ha kvar curl och sedan köra med get_contents istället och nu verkar det hända grejer. Nu får jag det här felet istället:

./test.sh: line 7: /usr/bin/php: Argument list too long

Koden ser ut så här:

Kod: Markera allt

#!/bin/bash

url=$(curl -Ls "http://www.expressen.se/Nyheter/1.1722360/misstankte-helikopterpiloten-har-gripits")

var=$url php twitter.php
och

Kod: Markera allt

<?php

function getTextBetweenTags($tag, $html)
{
    $pattern = "/<$tag?.*>(.*?)<\/$tag>/";
    preg_match_all($pattern, $html, $matches);
    return $matches[1];   
}

$html = file_get_contents('$_ENV['var'];')

$content = getTextBetweenTags('a', $html);

foreach( $content as $item )
{
    echo $item.'<br />';
}
?>
Om jag kör med url=$(echo "http://example.com") i bash-skriptet och sedan använder samma php-skript men med get_contents så får jag som sagt samma fel som tidigare, dvs Terminalen klagar på line 10 i php-skriptet: Parse error: syntax error, unexpected T_VAR in $HOME/test.php on line 10

Det är ju uppenbart att php-skriptet inte får adressen som finns i bash-variablen $url på ett korrekt sätt.
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: bash-variabel till php-skript?

Inlägg av Konservburk »

ubot skrev:Ok, men jag kommer inte runt att jag behöver bolla in en variabel eftersom php-skriptet ska använda olika URLs som kommer från ett bash-skript. jag måste alltså på något vis få php-skriptet att använda kod från en URL, vars adress finns i en bash-variabel. Nu testade jag med det här:

Kod: Markera allt

$html = file_get_contents('$_ENV['var'];')
Där url är satt till var=$(echo "URL") i bash-skriptet. Det fungerade inte. Samma felmeddelande som förut.
Problemet är att du inte förstår vad du gör. Du kan inte ha enkelfnuttar runt variabeln på det där sättet. Och vad gör semikolonet innuti funktionsanropet?
ubot
Inlägg: 4613
Blev medlem: 04 jan 2008, 14:03
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

Re: bash-variabel till php-skript?

Inlägg av ubot »

Konservburk skrev:
ubot skrev:Ok, men jag kommer inte runt att jag behöver bolla in en variabel eftersom php-skriptet ska använda olika URLs som kommer från ett bash-skript. jag måste alltså på något vis få php-skriptet att använda kod från en URL, vars adress finns i en bash-variabel. Nu testade jag med det här:

Kod: Markera allt

$html = file_get_contents('$_ENV['var'];')
Där url är satt till var=$(echo "URL") i bash-skriptet. Det fungerade inte. Samma felmeddelande som förut.
Problemet är att du inte förstår vad du gör. Du kan inte ha enkelfnuttar runt variabeln på det där sättet. Och vad gör semikolonet innuti funktionsanropet?
Det är sant, jag vet inte vad jag håller på med. Jag vill helt enkelt föra in en variabel från ett bash-skript in i ett php-skript.
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: bash-variabel till php-skript?

Inlägg av Konservburk »

ubot skrev:Jag vill helt enkelt föra in en variabel från ett bash-skript in i ett php-skript.
Det har du redan gjort. Men det är skillnad på '$_ENV['var'];' och $_ENV['var'] i php-skriptet. Och det är skillnad på var=$url och var="$url" i shell-skriptet.
ubot
Inlägg: 4613
Blev medlem: 04 jan 2008, 14:03
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

Re: bash-variabel till php-skript?

Inlägg av ubot »

Konservburk skrev:
ubot skrev:Jag vill helt enkelt föra in en variabel från ett bash-skript in i ett php-skript.
Det har du redan gjort. Men det är skillnad på '$_ENV['var'];' och $_ENV['var'] i php-skriptet. Och det är skillnad på var=$url och var="$url" i shell-skriptet.
Ok, men nu flyttade sig felet från rad 10 till rad 12:

Parse error: syntax error, unexpected T_VARIABLE in $HOME/test.php on line 12

Vilket alltså är raden under:

Kod: Markera allt

...
$html = file_get_contents($_ENV['var'])
$content = getTextBetweenTags('a', $html);
...
Jag har använt fnuttar i bash-skriptet, dvs var="$url" php test.php
Senast redigerad av 2 ubot, redigerad totalt 27 gång.
Skriv svar

Återgå till "Programmering och webbdesign"