0

我有非常简单的 bash 脚本:

#!/bin/bash
echo -n "A: ";
grep -v ">" | grep -o "A" $1 | wc -l;

我打字

./script.sh 1.fasta

我有

A: 131

但是光标仍然在闪烁,我的脚本还没有完成。这里有什么问题?

谢谢你。

4

2 回答 2

4

这是问题命令:

grep -v ">" | grep -o "A" $1 | wc -l;

由于第一个命令grep -v ">"正在等待来自 STDIN 的输入,因为您没有提供任何要搜索的文件grep

PS:甚至grep -o "A" $1也是问题,因为管道命令将从链中前一个命令的输出中获取输入。

可能你的意思是:

grep -v ">" "$1" | grep -o "A" | wc -l
于 2013-07-24T07:59:29.843 回答
2

您的第一个grep没有文件参数,因此它将从标准输入中读取:

grep -v ">"  | grep -o "A" $1 | wc -l;
(read stdin)     (read $1)

你得到的原因131是因为你的第二个grep 确实有一个文件参数,所以它让所有行$1都有一个A. 然而,它仍在等待第一个grep结束(您可以使用 CTRL-D 完成)。

可能想要做的是:

grep -v ">" "$1" | grep -o "A" | wc -l

这将找到所有$1没有 a 的行>,然后在其中找到所有出现的A计算它们。

于 2013-07-24T08:01:51.983 回答