bash-variabel till php-skript? [LÖST]
bash-variabel till php-skript? [LÖST]
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.
Re: bash-variabel till php-skript?
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?
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 skrev: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?
Kod: Markera allt
#!/bin/bash
IDOL=andol
export IDOL
php foo.php
Kod: Markera allt
#!/usr/bin/php
<?php
echo(getenv("IDOL") . "\n");
?>
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: bash-variabel till php-skript?
Du kan ha en php-fil som ser ut så här:
... som du anropar så här:
Kod: Markera allt
<?
echo $_ENV['var'];
echo $_SERVER['argv'][1];
?>
Kod: Markera allt
var=hej php test.php san
Re: bash-variabel till php-skript?
Ok, och om jag vill kasta in två variabler då?Konservburk skrev:Du kan ha en php-fil som ser ut så här:
... som du anropar så här:Kod: Markera allt
<? echo $_ENV['var']; echo $_SERVER['argv'][1]; ?>
Kod: Markera allt
var=hej php test.php san
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: bash-variabel till php-skript?
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
Re: bash-variabel till php-skript?
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?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
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: bash-variabel till php-skript?
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?
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?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.
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: bash-variabel till php-skript?
Det borde snarare bli function_name($_ENV['var']); istället. Du kan annars byta namn på variablerna om du känner för det...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?
Kod: Markera allt
$var = $_ENV['var'];
Re: bash-variabel till php-skript?
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!Konservburk skrev:Det borde snarare bli function_name($_ENV['var']); istället. Du kan annars byta namn på variablerna om du känner för det...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?
Kod: Markera allt
$var = $_ENV['var'];
Re: bash-variabel till php-skript?
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:
test.php:
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?
test.sh:
Kod: Markera allt
#!/bin/bash
url=$(curl -Ls http://example.com)
var=$url php twitter.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 />';
}
?>
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.

- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: bash-variabel till php-skript?
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.
Kod: Markera allt
var="$url" php twitter.php
Re: bash-variabel till php-skript?
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: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.Kod: Markera allt
var="$url" php twitter.php
Kod: Markera allt
$html = file_get_contents('$_ENV['var'];')
Re: bash-variabel till php-skript?
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:
och
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.
./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
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 />';
}
?>
Det är ju uppenbart att php-skriptet inte får adressen som finns i bash-variablen $url på ett korrekt sätt.
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: bash-variabel till php-skript?
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 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.Kod: Markera allt
$html = file_get_contents('$_ENV['var'];')
Re: bash-variabel till php-skript?
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.Konservburk skrev: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 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.Kod: Markera allt
$html = file_get_contents('$_ENV['var'];')
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: bash-variabel till 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 skrev: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?
Ok, men nu flyttade sig felet från rad 10 till rad 12:Konservburk skrev: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 skrev:Jag vill helt enkelt föra in en variabel från ett bash-skript in i ett php-skript.
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);
...
Senast redigerad av 2 ubot, redigerad totalt 27 gång.