我编写了一个脚本来检查文件退出,然后检查该文件是否有给定的行,最后打印该行,如下所示
#!user/bin/bash
echo "$1 $2"
if [ -e "$1" ]; then
if [ "$(wc -l "$1")" -ge 1 ]; then
sed -n "1p" "$1"
fi
fi
但它返回错误Illegal number: 3 /home/k/Documents/text.txt
我的问题是,如何将其设为wc -l "$1"
变量?
答案1
默认输出wc -l file
包括文件名和计数。
$ wc -l file
8 file
作为一种解决方法,您可以将文件内容重定向到wc -l
通过 shell 的标准输入流:
$ wc -l < file
8
所以
if [ "$(wc -l < "$1")" -ge 1 ]; then
sed -n "1p" "$1"
fi
答案2
仅保留输出中的第一个字段wc
。Awk 是我最喜欢的工具:
wc -l "$1" | awk '{ print $1 }'
要将其捕获到变量中:
COUNT="$(wc -l "$1" | awk '{print $1}')"