2

我的问题是我将数组值设置为服务器的名称,如下所示:

$appserver[$i]=`grep $ip[2] /etc/hosts |awk '{print $2}'`;

后来我做了一个测试,看看服务器是否启动(使用 wget)。如果测试失败,我会通过使用 touch 创建一个具有该名称的文件来跟踪该服务器是否关闭:

$touch=`touch /home/steve/data/$appserver[$i];

该文件已成功创建。后来当我去测试文件是否存在时,它永远不会评估为真。

if(file_exists('/home/steve/data/$appserver[$i])) {

我尝试了几种不同的方法,包括为 $appserver[$i] 创建一个新变量并对其进行测试,但这也不起作用:

我在 RHEL 5 上运行 php 5.1.6。

这是完整的代码:

  $appserver[$i]=`grep $ip[2] /etc/hosts |awk '{print $2}'`;
  echo "appserver[i] = $appserver[$i]\n";
   $get=`wget $key->url 2> /dev/null`;
   if(file_exists('/home/user/Start')) {
            $color[$i]="green";
            $rm=`rm -rf /home/user/Start`;
    }
    else {
            $color[$i]="red";
            if($hostname=="xxxxx" ) {
                    **if(file_exists('/home/user/data/$appserver[$i]))**  {**
                        echo "do nothing appserver file exists\n";
                        $touch=`touch /home/steve/data/notmailed`;
                        }
                    else {
                    echo "No app file mailed alert\n";
                    $touch=`touch /home/user/data/$appserver[$i]`;
                    }
            }
    }

谢谢你。

4

3 回答 3

1
if(file_exists('/home/steve/data/$appserver[$i]')) {

'带引号的字符串不会插入变量值,因此您要查找文字名称为$appserver[$i]. 改用"引号:

if(file_exists("/home/steve/data/$appserver[$i]")) {
于 2012-09-19T14:18:21.350 回答
1

它应该是:

if(file_exists("/home/steve/data/$appserver[$i]")) {
于 2012-09-19T14:17:56.780 回答
0

尝试这个:

$appserver[$i] = "grep $ip[2] /etc/hosts |awk '{print $2}'";

//...

if(file_exists("/home/steve/data/$appserver[$i]"))
{
    //...
}

"确保在希望将变量内容解析为声明字符串的任何地方都使用双引号 ( )!

于 2012-09-19T14:18:06.893 回答