2011-08-18 70 views
0

逃逸字符串我有这个简单的bash脚本:在bash

#!/bin/bash 
isRunning=$(ps -Af | awk '{if ($11 == "HomeDir") { print $0 }}' | wc -l) 
if [ $isRunning == "0" ]; then 
    echo "Script is running" 
fi 

该脚本返回:

./script.sh: line 3: [ 0: command not found 

我做了什么错?

+0

除了显而易见的,如果你打算管道ftom'ps'给AWK输出的麻烦,你还不如重写awk脚本打印的东西明智而有用,并避免愚蠢的'wc -l'。更多关于古老的[UUCA谩骂页面] [1]。 [1] http://www.iki.fi/era/unix/award.html – tripleee

回答

1

简化:

if [ -n "$(ps -Af | awk '$11 == "HomeDir"')" ]; then echo "running"; fi 
0

更改if到:

if [ "$isRunning" -eq "0" ]; then             
0

test运营商平等=,不==。此外,采取定制包围,以防万一通过"变量:

if [ "$isRunning" = "0"] ; then ... 

或只使用-eq,作为codaddict建议。

0

为什么你需要一个脚本? 简单的命令就足够了。

ps -Af | awk '{if ($11 == "HomeDir"){counter++}END{if(counter>0)print "script is running"}}' 
+2

ps -Af | grep -q -E'^([^] + +){10} HomeDir'&& echo“Script is running”is even more simple :) – XzKto