Sida 1 av 2
bash-variabel till php-skript? [LÖST]
Postat: 26 sep 2009, 19:52
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?
Re: bash-variabel till php-skript?
Postat: 26 sep 2009, 20:01
av andol
Du kan använda PHP:s funktion
getenv() för att läsa miljövariabler du satt i ditt bash-skript.
Re: bash-variabel till php-skript?
Postat: 26 sep 2009, 22:13
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?
Re: bash-variabel till php-skript?
Postat: 26 sep 2009, 22:28
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");
?>
Re: bash-variabel till php-skript?
Postat: 26 sep 2009, 22:32
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:
Re: bash-variabel till php-skript?
Postat: 26 sep 2009, 23:10
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:
Ok, och om jag vill kasta in två variabler då?
Re: bash-variabel till php-skript?
Postat: 26 sep 2009, 23:19
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
<?
echo $_SERVER['argv'][1];
echo $_SERVER['argv'][2];
?>
Re: bash-variabel till php-skript?
Postat: 26 sep 2009, 23:30
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
<?
echo $_SERVER['argv'][1];
echo $_SERVER['argv'][2];
?>
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?
Re: bash-variabel till php-skript?
Postat: 26 sep 2009, 23:34
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.
Re: bash-variabel till php-skript?
Postat: 26 sep 2009, 23:57
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?
Re: bash-variabel till php-skript?
Postat: 27 sep 2009, 00:13
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...
Re: bash-variabel till php-skript?
Postat: 27 sep 2009, 01:32
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...
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!
Re: bash-variabel till php-skript?
Postat: 27 sep 2009, 16:45
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?
Re: bash-variabel till php-skript?
Postat: 27 sep 2009, 16:50
av Konservburk
Du måste använda funttar om du tänker göra på det sättet...
Jag föreslår att du använder
$html = file_get_contents('http://example.com') i php-skriptet istället.
Re: bash-variabel till php-skript?
Postat: 27 sep 2009, 16:52
av ubot
Konservburk skrev:Du måste använda funttar om du tänker göra på det sättet...
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:
Där url är satt till var=$(echo "URL") i bash-skriptet. Det fungerade inte. Samma felmeddelande som förut.
Re: bash-variabel till php-skript?
Postat: 27 sep 2009, 16:59
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.
Re: bash-variabel till php-skript?
Postat: 27 sep 2009, 17:10
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:
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?
Re: bash-variabel till php-skript?
Postat: 27 sep 2009, 17:13
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:
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.
Re: bash-variabel till php-skript?
Postat: 27 sep 2009, 17:22
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.
Re: bash-variabel till php-skript?
Postat: 27 sep 2009, 17:42
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