2011-06-14 101 views
1

我试图修改一个ksh脚本来打印出包含短语“/ var/corefiles”的行。我对脚本相当陌生,所以这让我感到尴尬。举例来说,如果我有一个文件如何防止grep破坏ksh脚本中的行?

/dev/x /dev/x2 /var/corefiles yes 

以下行,我用这个循环:

for $host in $(grep "var/corefiles" $VFSTAB_LOC); do 
     echo $i 
done 

它输出:

/dev/x 
/dev/x2 
/var/corefiles 
yes 

我有点困惑为什么它一次只打印出一个块。如果任何人有任何解释/修改,他们将不胜感激!

回答

4

简单地做grep "var/corefiles" $VFSTAB_LOC(没有forecho)会做你说你想要做的。

+0

我有一种感觉, '回声' 仅仅是他真正的循环就减少演示:) – sehe 2011-06-14 13:31:43

+0

@sehe:我调用GIGO。 – 2011-06-14 13:32:54

+0

即使没有尝试,我也会'受苦'GIGO。我尝试应用常见的一些人造(?)情报,尽管 – sehe 2011-06-14 13:35:43

0
grep "var/corefiles" $VFSTAB_LOC | while read line; do 
     echo "$line" 
done 

或近bashes

readarray mylines < grep "var/corefiles" $VFSTAB_LOC 

for line in "${mylines[@]}"; do 
    echo "$line" 
done 

+0

这个问题被标记为ksh,你知道吗? ;-) – 2011-06-14 13:31:43

+0

我想我是_now_ :)第一个选项_does_与Korn shell,IIRC – sehe 2011-06-14 13:34:03