【问题标题】:Can we use PHP in Bash Script?我们可以在 Bash 脚本中使用 PHP 吗?
【发布时间】:2014-05-13 11:26:08
【问题描述】:

我有一个 bash 脚本 abcd.sh

#!/bin/sh
for i in `seq 8`; do ssh w$i 'uptime;ps -elf|grep httpd|wc -l;free -m;mpstat'; done &
pid=$!
sleep 1
kill -9 $pid

我想在我的 bash 脚本中使用 PHP。

例如:在 bash 脚本中,我想通过 PHP 设置 seq 的值。

【问题讨论】:

  • 是的,但你试过吗?
  • 您真的想通过 php 设置号码 seq(看起来很奇怪)还是想从 http 服务器获取号码?
  • @drkunibar 先生,此脚本提供有关服务器的数据。服务器数量随时间变化,所以我想动态设置 seq 值。 seq 值等于服务器数量。但是我希望当服务器数量发生变化时,脚本会自动计算它,不需要手动在脚本中一次又一次地更改。

标签: php linux bash


【解决方案1】:

要理解你想要什么并不容易。

也许这会有所帮助。该脚本在 bash 中定义了一个 var PHP_VAR 并在 PHP 中使用这个 var。然后我们调用 PHP 代码 sn-p 并将输出放入 shell var output。最后我们输出 var output(但你可以用它做其他事情)。

声明: PHP 的所有输出都将在 var output 中找到。

#!/bin/bash

echo "I am a bash echo"

export PHP_VAR="I was in php"
# Here we start php and put the output in 'output'
output=$(php << EOF
   <?php \$inner_var = getenv("PHP_VAR");
   echo \$inner_var; ?>
EOF
)

# usage var 'output' with php output
echo "---$output---"

【讨论】:

    【解决方案2】:

    嗯,如果您使用的是 bash,您可能应该在第 1 行使用 bash shebang,这样人们就知道您期望 bash 功能可用。如果您使用的是 bash,则无论如何都可以使用 bash 序列:

    #!/bin/bash
    for i in {1..8}; do echo $i; done
    

    更新 1

    如果服务器数量是通过PHP获取的,可以这样:

    numservers=$(php -r 'echo 8;')
    for i in $(seq $numservers); do echo $i; done
    1
    2
    3
    4
    5
    6
    7
    8
    

    更新 2

    好吧,你说服务器的数量是动态的,但是你说它是在脚本中设置的(这似乎是矛盾的),但这是你做的:

    numservers=10
    for i in $(seq $numservers); do echo $i; done
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    

    【讨论】:

    • 先生,这个脚本给出了关于服务器的数据。服务器的数量根据时间而变化,所以我想动态设置seq的值。seq的值等于服务器的数量
    • 我们可以在 bash 脚本中使用 foreach 循环吗?
    • 我已经更新了我的答案,以便您可以使用 PHP 查询服务器数量。
    • 如果服务器数量为 10 则此脚本将正常工作
    • 我假设您知道如何使用自己的 PHP 获取服务器数量,不是吗?将您的代码放在我的echo 8 的位置,然后它将适用于您的服务器数量。你如何确定服务器的数量?
    【解决方案3】:

    为什么不用 PHP 编写整个 shell 脚本?

    #!/usr/bin/php
    <?php
    for ($i = 0; $i < 8; $i++) {
        exec("ssh w$i 'uptime;ps -elf|grep httpd|wc -l;free -m;mpstat'");
    }
    ?>
    

    (代码未经测试,仅作为示例)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-03
      • 1970-01-01
      • 2011-03-06
      • 2011-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-08
      相关资源
      最近更新 更多