-2

我编写了产生一组单词的代码

my $uptime = `command | sed -n "xp" | cut -d" " -fx`;

上面的命令给了我下面的词。

not running

我想在下面的if语句中使用这个词:

if ($uptime = $not){
    $run = `command`;
    $start = `start`;

我已经声明了一个变量$not并放入"not running"其中。尽管脚本正在运行,但当程序运行时,它正在做相反的事情。下面的命令给出了一个不同的词(如“ok”)不在变量$not中,但脚本正在重新启动程序。

#!/usr/bin/perl

use warnings;
use strict;

$not = "not running";
$uptime = `command | sed -n "xp" | cut -d" " -fx`;
if ($uptime = $not){
    # If not running, the program then executes the below, else do nothing
    $run = `cp /home/x`;
    $start = `start`;
}
4

1 回答 1

2
'if ($uptime = $not)' and 'if ($uptime eq $not)'

是两个不同的东西。eq是字符串比较运算符,因此当比较相等且''条件不满足时它将返回 1,而if ($uptime = $not)当计算结果为 true 时将返回 true,$not因为您正在使用赋值运算符将一个变量分配给另一个变量=。所以请更改您的代码。

your condition will look like the following .
$uptime=chomp($uptime);
if ($uptime eq $not){
//your code
}
于 2013-11-02T05:18:13.740 回答