我们可以在Bash脚本中使用PHP吗?

时间:2014-04-02 09:27:10

标签: php linux bash

我有一个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的值。

3 个答案:

答案 0 :(得分:1)

嗯,如果你使用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

答案 1 :(得分:0)

为什么不用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'");
}
?>

(代码未经测试,只是一个例子)

答案 2 :(得分:0)

理解你想要的东西并不容易。

也许这有帮助。该脚本在bash中定义var PHP_VAR并在PHP中使用此var。然后我们调用一个PHP代码片段,将输出放在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---"