在分别打印文件名和行时查找文件中的最大行数?

时间:2013-06-12 16:56:49

标签: linux bash shell scripting

所以我一直在搞乱这个问题,我认为我出错的地方是我写的代码只需要返回文件名和参数中的行数。

所以使用wc我需要得到一些东西来接受0或1个参数并打印出类似“文件findlines.sh有4行”或者如果它们给出./findlines.sh桌面/测试文件它们会得到“文件测试文件有5行”

我有几次尝试,所有这些都失败了。我似乎无法弄清楚如何处理它。

我应该回显“文件”,然后将参数名称输入,然后为“有行数[行]”添加另一个回声吗?

示例输入将来自终端类似

>findlines.sh
Output:the file findlines.sh has 18 lines

或者

>findlines.sh /home/directory/user/grocerylist
Output of 'the file grocerylist has 16 lines

2 个答案:

答案 0 :(得分:2)

#! /bin/sh -
file=${1-findfiles.sh}
lines=$(wc -l < "$file") &&
  printf 'The file "%s" has %d lines\n' "$file" "$lines"

答案 1 :(得分:1)

这应该有效:

#!/bin/bash

file="findfiles.sh"
if [ $# -ge 1 ]
then
    file=$1
fi

if [ -f $file ]
then
    lines=`wc -l "$file" | awk '{print $1}'`
    echo "The file $file has $lines lines"
else
    echo "File not found"
fi

请参阅sch的答案,了解一个不使用awk的简短示例。