简单的bash脚本没有终止

时间:2013-07-24 07:58:31

标签: bash

我有一个非常简单的bash脚本:

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

我输入

./script.sh 1.fasta

我得到了

A: 131

但是,这个过程仍在点击,我的剧本还没有完成。这里有什么问题?

谢谢。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

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

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

您获得131的原因是因为您的第二个grep 有一个文件参数,因此它会让$1中的所有行都有{ {1}}。但是仍然等待第一个A结束(你可以使用CTRL-D)。

你可能想要做的是:

grep

这会在grep -v ">" "$1" | grep -o "A" | wc -l 中找到没有$1的所有行,然后在中出现>的所有行,计算它们。

相关问题