Dav*_*kac 6 php bash laravel laravel-envoy
我有简单的特使设置.服务器:
@servers(['ws' => 'ws.sk'])
Run Code Online (Sandbox Code Playgroud)
......和简单的"ping"任务:
@task('ping-ws', ['on' => 'ws'])
echo "Hello world from WS server!"
echo $(pwd)
pwd
var_1="Hello"
echo "${var_1}"
@endtask
Run Code Online (Sandbox Code Playgroud)
我想在哪里为变量赋值并稍后访问它们.虽然结果很意外:
envoy run ping-ws
Hello world from WS server!
/Users/davidlukac/dev/drupal/_devdesktop/davidlukac
/home
Run Code Online (Sandbox Code Playgroud)
$(pwd)命令在本地进行评估.var_1未分配,或在下一行超出范围.这是预期的行为吗?它有解决方法吗?
谢谢您的帮助!
查看代码,我们可以看到用于传递命令的方法。首先构建命令:
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
Run Code Online (Sandbox Code Playgroud)
然后,该命令被发送以由 PHP 的proc_open命令运行。
由于输入是通过 STDIN 传递的,因此在发送之前会由本地环境进行解释。您可以将上述内容复制并粘贴到终端中以查看相同的内容。
所需要的只是转义任何可能被本地环境解释的字符;在这种情况下,是$角色。
@task('ping-ws', ['on' => 'ws'])
echo "Hello world from WS server!"
echo \$(pwd)
pwd
var_1="Hello"
echo "\${var_1}"
@endtask
Run Code Online (Sandbox Code Playgroud)
请注意,您可能需要两次转义,不确定 Envoy 是否会尝试自行进行第一次转义。
| 归档时间: |
|
| 查看次数: |
612 次 |
| 最近记录: |