bash - For 循环函数在 while 循环中不起作用
问题描述
我希望为我的基因列表中的每个基因重复相同的功能。这就是while循环的作用。然后它将文件从主文档中提取到一个新的床文件中。
number_of_lines 变量是文档中的行数。我想创建一个与 number_of_lines 对应的行数的文档
IE
number_of_lines=1
输出
1
number_of_lines=5
输出
5
5
5
5
5
我的代码如下
while read gene
do
grep -w $gene $masterfile | awk '{print $1"\t"$2"\t"$3"\t"$5"\t"$6"\t"$4}' > $gene.bed
number_of_lines=$(grep "^.*$" -c $gene.bed)
echo $number_of_lines
cat "" > $gene.1.bed
for i in 'eval echo {1..$number_of_lines}'
do
echo $number_of_lines >> $gene.1.bed
done
done < $genelist
如果我自己这样做
cat "" > $gene.1.bed
for i in 'eval echo {1..$number_of_lines}'
do
echo $number_of_lines >> $gene.1.bed
done
有用?
解决方案
当您看到 时eval
,您“知道”您的代码是错误的。@Barmar 已经指出了正常的构造for ((i=0; i<$number_of_lines; i++))
,这里应该使用什么。由于所有行都具有相同的内容,您还有另一种可能性:yes
. 我也做了一些其他的改变。
while read gene
do
grep -w "${gene}" "${masterfile}" |
awk 'BEGIN {OFS="\t";} {print $1, $2, $3, $5, $6, $4}' > "${gene}.bed"
number_of_lines=$(wc -l < "${gene}.bed")
echo "${number_of_lines}"
yes "${number_of_lines}" | head -"${number_of_lines}" > "${gene}.1.bed"
done < "${genelist}"
推荐阅读
- swift - 像字符串一样直接访问自定义 Swift 结构,而无需使用“struct.property”表示法
- flutter - Flutter Google Maps 不会横向滚动
- sql-server - 将 CSV 逗号分隔文件导入 SQL Server 表
- java - 读取字母数字文本文件并尝试存储到列表或数组
- javascript - 使用两个输入字段向 .keyup() 添加函数
- python - QLineEdit readOnly 也禁用清除按钮
- c# - 如何在 C# 中从具有多个返回的存储过程中获取剩余输出
- postgresql - 获取每个员工的最大记录时间
- android - Android 如何使用 ViewOutlineProvider 显示圆形阴影?
- reactjs - 我正在尝试在 react.js 中构建一个垂直鼠标滚轮控制滑动器,但它不起作用?