“读取行”同时在读取C文件时提供垃圾数据

时间:2016-06-04 19:55:49

标签: linux bash shell

我想编写一个小脚本,使用shell脚本解析C文件的所有注释,但我甚至没有得到读取o / p正确,我得到的文件o / p与其他垃圾数据混合。< / p>

>/.1432804547.3007 /.1432804567.3007 /.1432804587.3007 /.1432804608.4021 /.1432804628.4021 /.1432804648.4021 /.1432804668.4021 /.1432804688.4021 /bin >/boot /dev /etc /home /lib /lib64 /lost+found /media /misc /mnt /net /opt /proc >/root /sbin /selinux /srv /sys /tmp /usr /var
>parsed_comments.tmp parse_func.sh file_update_time - update mtime and ctime time
>parsed_comments.tmp parse_func.sh @file: file accessed
>parsed_comments.tmp parse_func.sh
>parsed_comments.tmp parse_func.sh Update the mtime and ctime members of an inode and mark the inode
>parsed_comments.tmp parse_func.sh for writeback. Note that this function is meant exclusively for
>parsed_comments.tmp parse_func.sh usage in the file write path of filesystems, and filesystems may
>parsed_comments.tmp parse_func.sh choose to explicitly ignore update via this function with the
>parsed_comments.tmp parse_func.sh S_NOCMTIME inode flag, e.g. for network filesystem where these
>parsed_comments.tmp parse_func.sh timestamps are handled by the server.
>*/
>void file_update_time(struct file *file)

这就是我在做什么..

   parse_comments() {
    local filename="$1"
    while read line; do
    echo $line | grep "*"
    done < "$filename"
    parse_comments "/root/rpmbuild/linux-2.6.32-431.17.1.el6.x86_64/fs/inode.c"

我已经尝试了所有的解决方案(比如 - 读取-r,而读取-u 3和其他也是如此)告诉SO,因为读取问题没有解决方案对我有效。 我不知道用while循环阅读有什么不对请帮忙... 如果我使用'awk'进行同样的工作,它可以正常工作。但'awk'不符合我的目的。

1 个答案:

答案 0 :(得分:0)

问题在shellcheck.net解决了。这是修改后的代码...

parse_comments() {
    local filename="$1"
    while read -r line; do
    echo "$line" | fgrep -e "*" 
    done < "$filename"
}
parse_comments "/root/rpmbuild/linux-2.6.32-431.17.1.el6.x86_64/fs/inode.c"