比较字符串的问题(BASH)

时间:2015-10-03 23:28:09

标签: linux string bash if-statement string-comparison

我试图比较2个字符串。一个来自一个文件通过grep命令而另一个永远不会改变,因为我总是将它与我​​在读取文件文本时创建的那些进行比较。如果它们相等,程序应该打印与新字符串包含的内容相关联的数据。我已经尝试了bash允许的所有语法(因为我在bash中是新手),但它并没有像我预期的那样工作。它看起来像第二个if不起作用,因为我之前没有尝试过,只打印字符串(echo $text)并且它有效,但不是正确的方式作为练习I&#39我要求的。我必须在控制台中只显示正在运行的进程的pid和状态。

cd
cd /proc
run="State: S (sleeping)"
for i in $( ls -d */); 
do
    cd $i
    if [ -f /proc/$i/status ];
        then    text="`grep -w "S" status`"
             if [ "$text" == "$run" ]
                then grep -w "Pid" status
                     grep -w "State" status
             fi
             cd /proc
        else cd /proc
    fi
done
;;

1 个答案:

答案 0 :(得分:0)

您的values()变量包含run,但State:<space>S (sleeping)个文件包含/proc/<pid>/status(至少在我的系统中)。所以你应该用制表符替换那个空格字符。