我试图将一些复杂的makefile规则组合在一起,以便在多个编译器上自动构建一个项目。我有一个规则,它创建一些动态生成的变量并将变量分配给它们,然后将这些变量传递给一个调用来构建一个单独的规则。
.PHONY: all
all:
@echo "Detected CPULIST:${CPULIST_DETECTED}"
@echo "CPULIST:${CPULIST}"
@for cpu in $(CPULIST_DETECTED); do \
echo "CPU:$${cpu}
输入文件如下所示:
chr1 1 G 300
chr1 2 A 500
chr1 3 C 200
chr4 1 T 35
chr4 2 G 400
chr4 3 C 435
chr4 4 A 223
chr4 5 T 400
chr4 6 G 300
chr4 7 G 340
chr4 8 C 400
实际文件太大,无法处理,所以我想输出一个较小的文件过滤染色体(第1列)和位置(第2列)在一个特定的
我不太明白下面的if-语句实际上做了什么,从条件输出可能是什么的意义上说:
if linux-command-1 | linux-command-2 | linux-command-3 > /dev/null
我的理解是:
Linux 1被执行,它的输出被管道传输到2作为输入.
Linux 2用LC1的输入执行,它的输出被管道传输到3中.
Linux 3使用LC2的输入执行,它的输出被重定向到/dev/null,基本上不会出现。
,但是实际的if语句呢?是什么让它变得真实或错误呢?
为了进一步说明,下面是一个实际命令的示例:
if ps ax | grep -v gr
在这两个for语句中,我都得到了以下错误:
./count_files.sh: line 21: [: too many arguments
./count_files.sh: line 16: [: too many arguments.
有人能帮我吗?
#!/bin/bash
files=($(find /usr/src/linux-headers-3.13.0-34/include/ -type f -name '[aeiou][a-z0-9]*.h'))
count=0
headerfiles=($(find /usr/src/linux-headers-3.