2016-03-16 11 views
5

Basit Elçi kurulumum var. Bir sunucu:Laravel Elçisi görevi yürütülürken bash'ta bildirilen değişkene nasıl erişebilirim?

@servers(['ws' => 'ws.sk']) 

... ve basit "ping" görev: Ben değişkenlere bazı değerleri atamak sonra erişmek istiyorum

@task('ping-ws', ['on' => 'ws']) 
    echo "Hello world from WS server!" 
    echo $(pwd) 
    pwd 
    var_1="Hello" 
    echo "${var_1}" 
@endtask 

. Sonuç oldukça beklenmedik olsa:

envoy run ping-ws 
Hello world from WS server! 
/Users/davidlukac/dev/drupal/_devdesktop/davidlukac 
/home 
  1. $(pwd) komut yerel değerlendirilir.
  2. Değişken var_1, atanmamış ya da sonraki satırda kapsam dışıdır. Bu beklenen davranış

mi? Bunun için bir çözüm var mı?

Yardımın için teşekkürler!

+0

Benzer sorunu: _pipe_ içeren bir Elçi görev, bir 'bash' senaryoyu çağrılırken (' | ';' komutu | grep "bir şey" ') o boruya aldığında, bu senaryoyu ve görevi kesintiye uğratır. –

cevap

1

Looking at the code, biz yöntemi komutları geçmek için kullanılan görebilirsiniz. İlk komut oluşturulmuştur:

ssh ws.sk 'bash -se' << EOF-LARAVEL-ENVOY 
echo "Hello world from WS server!" 
echo $(pwd) 
pwd 
var_1="Hello" 
echo "${var_1}" 
EOF-LARAVEL-ENVOY 

Ve then, o komut PHP'nin proc_open komutu tarafından çalıştırılacak kapalı gönderilir.

giriş STDIN'den aktanlmasmı olduğundan

, bu gönderilmeden önce yerel çevre tarafından yorumlanır vurmayacak. Aynı şeyi görmek için yukarıdakileri kopyalayıp terminale yapıştırabilirsiniz.

Gerekli olan tek şey, yerel ortam tarafından yorumlanabilecek karakterlerden kurtulmak; bu durumda, $ karakterleri.

@task('ping-ws', ['on' => 'ws']) 
    echo "Hello world from WS server!" 
    echo \$(pwd) 
    pwd 
    var_1="Hello" 
    echo "\${var_1}" 
@endtask 

Elçilerin ilk kaçışını almaya çalışıp çalışmadıklarından emin olmadıklarından emin olmak için çifte kaçış yapmanız gerekebilir.

+0

'$' s gerçekten çalışıyor! Çok teşekkürler! –

+0

Yardım etmekten memnun oldum. Bunun üründe bir hata olarak görülmesini tavsiye ederim. Çalışma zamanında senin için kaçış yapmalı. – miken32

+1

Sorun, https://github.com/laravel/framework/issues/12768 adresinde yayınlandı. –

İlgili konular