缺少一个条件以显示字符串

时间:2015-06-22 09:07:10

标签: shell

我正在处理一个小脚本,它只需要一个参数并读取ls -l的输出,并显示以该参数开头的文件的用户和名称。

例如:

$> ls -l | ./script.sh "ok"
John   ok_file
Mark   ok_test

这是脚本的样子:

#!/bin/bash                                                                                                                                                                                   

while read hello
do
    name=$(echo $hello | cut -d' ' -f9 | grep $1)

    if [ $? = 0 ]
    then
        log=$(echo $hello | cut -d' ' -f3)
        echo -n $log' ' && echo $name
    fi
done

它工作正常,但我缺少一个条件:它不会显示带有参数的STARTS文件,而是显示包含它的任何文件。

如何更改此脚本以添加此条件?

非常感谢。

1 个答案:

答案 0 :(得分:0)

' grep' command使用正则表达式来匹配文本。使用' ^'在表达式之前,从行的开头匹配。所以,你可以改变一行

name=$(echo $hello | cut -d' ' -f9 | grep $1)

name=$(echo $hello | cut -d' ' -f9 | grep "^"$1)

你应该得到预期的结果。