我有非常简单的 bash 脚本:
#!/bin/bash
echo -n "A: ";
grep -v ">" | grep -o "A" $1 | wc -l;
我打字
./script.sh 1.fasta
我有
A: 131
但是光标仍然在闪烁,我的脚本还没有完成。这里有什么问题?
谢谢你。
我有非常简单的 bash 脚本:
#!/bin/bash
echo -n "A: ";
grep -v ">" | grep -o "A" $1 | wc -l;
我打字
./script.sh 1.fasta
我有
A: 131
但是光标仍然在闪烁,我的脚本还没有完成。这里有什么问题?
谢谢你。
这是问题命令:
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
您的第一个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
行,计算它们。