0

所以我一直把这搞砸了,我认为我出错的地方是我正在编写的代码只需要从参数中返回文件名和行数。

因此,使用 wc 我需要获取一些东西来接受 0 或 1 个参数并打印出类似“文件 findlines.sh 有 4 行”之类的内容,或者如果他们给出 ./findlines.sh 桌面/测试文件,他们将得到“文件 testfile 有 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
4

2 回答 2

2
#! /bin/sh -
file=${1-findfiles.sh}
lines=$(wc -l < "$file") &&
  printf 'The file "%s" has %d lines\n' "$file" "$lines"
于 2013-06-12T19:55:18.303 回答
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

有关不使用 awk 的简短示例,请参见 sch 的答案。

于 2013-06-12T17:14:18.153 回答