【发布时间】:2015-10-03 23:28:09
【问题描述】:
我正在尝试比较 2 个字符串。一个来自通过 grep 命令的文件,另一个永远不会改变,因为我总是将它与我在读取文件文本时创建的文件进行比较。如果它们相等,程序应该打印与新字符串包含的内容相关的数据。我已经尝试了 bash 允许的所有语法(因为我是 bash 的新手),但它并没有像我预期的那样工作。看起来第二个 if 不起作用,因为我之前没有尝试过,只打印字符串 (echo $text) 并且它起作用了,但不是我正在做的练习所要求的正确方法。我必须在控制台中只显示正在运行的进程的 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
;;
【问题讨论】:
-
运行一个(部分)脚本执行
cd somewhere然后运行另一个cd back.to.where.it.started作为子shell 通常更简单,它只是更改到目标目录并退出。最初的cd到$HOME也有点毫无意义。检查/proc/$i/status然后读取./status很有趣,尽管它实际上是同一个文件。此外,处理来自ls的输出是一个令人担忧的过程——通常要小心,尽管在这个例子中它可能相当安全。
标签: linux string bash if-statement string-comparison