我正在处理一个小脚本,它只需要一个参数并读取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文件,而是显示包含它的任何文件。
如何更改此脚本以添加此条件?
非常感谢。
答案 0 :(得分:0)
' grep' command使用正则表达式来匹配文本。使用' ^'在表达式之前,从行的开头匹配。所以,你可以改变一行
name=$(echo $hello | cut -d' ' -f9 | grep $1)
到
name=$(echo $hello | cut -d' ' -f9 | grep "^"$1)
你应该得到预期的结果。