Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何在Makefile中计算文件中的行数?_Bash_Makefile - Fatal编程技术网

Bash 如何在Makefile中计算文件中的行数?

Bash 如何在Makefile中计算文件中的行数?,bash,makefile,Bash,Makefile,我有一个Makefile,其中有一个文本文件和一个特定的数字。我想比较该文本文件中的行数,看看它是否等于或大于该行数,但使用wc bash命令没有成功 我已经尝试在文本文件上使用wc,但是$(wc-l

我有一个Makefile,其中有一个文本文件和一个特定的数字。我想比较该文本文件中的行数,看看它是否等于或大于该行数,但使用wc bash命令没有成功

我已经尝试在文本文件上使用wc,但是$(wc-l e、 g

TEST=“$(wc-l
对这些变量中的任何一个执行@echo$(值测试)(通过TEST3进行测试)将导致空输出

我还尝试将文本文件中的行数放入另一个文本文件(例如,linecount.txt,其中一行表示“30”)。然后我尝试将文件内容存储到一个变量中,以便将其与数字进行比较,但这没有起作用,因为我无法在开始时定义变量


有什么建议吗?这是可能的,还是我必须单独编写脚本?如果可能,您希望在Makefile中执行此操作。

首先,您应该指定需要GNU make的语法(您对
ifeq
的引用是唯一的线索)

回到您的实际问题,gmake本身没有
wc
函数。您要做的是执行一个外部命令。您可以使用
shell
函数执行此操作:

TEST:=$(shell wc -l < missing_test_line_count.txt)
TEST=$(shell wc-l
在BSD make中,通过
实现了同样的效果=-分配:

测试!=wc-l<缺少测试线\u count.txt

要将shell作为GNUMakefile中变量扩展的一部分运行,需要使用
shell
函数:

TEST:=$(shell wc -l < missing_test_line_count.txt)
它将在每次展开
$(TEST)
变量时运行该命令


请注意,此函数(以及一般函数)是GNUMake扩展。普通品牌不支持这样做。

注意GNU品牌(4.2及以上)的较新版本支持
=也是。
TEST=$(shell wc -l < missing_test_line_count.txt)