for
循环和 while
循环都是编程中常用的控制结构,用于多次执行一段代码块。它们在语法和用法上有些差异,下面我将分别介绍一下如何使用 for
循环和 while
循环。
for 循环
for
循环适用于已知循环次数的情况,你可以指定一个计数变量和一个循环次数范围,然后在每次迭代中执行相应的操作。
语法:
for 变量 in 范围
do
# 循环体,可以在这里编写要执行的操作
done
示例:
for i in {1..5}
do
echo "Iteration number: $i"
done
这将输出:
Iteration number: 1
Iteration number: 2
Iteration number: 3
Iteration number: 4
Iteration number: 5
while 循环
while
循环适用于不确定循环次数的情况,你可以定义一个条件,只要条件为真,循环就会一直执行。
语法:
while 条件
do
# 循环体,可以在这里编写要执行的操作
done
示例:
count=1
while [ $count -le 5 ]
do
echo "Count: $count"
count=$((count + 1))
done
这将输出:
Count: 1
Count: 2
Count: 3
Count: 4
Count: 5
在 while
循环中,条件可以是任何返回真或假值的表达式。循环会在每次迭代时检查条件是否为真,只要条件为真,循环就会继续执行。
结合前面的命令
# 这样 直接列出 需要的文件 直接用上
ls *list|while read a
do
echo $a
done
多个变量的简单用法
# 一个三列的文件
cat mv_name.txt
G2 gene2
G4 gene4
G5 gene5
G6 gene6
# 两列两个变量,分别输入,也可以整成多列读取多个变量
cat vs.txt|while read a b
do
mv $a.txt $b.txt # 批量修改文件名称
done
# 再或者 不用额外的文件 直接改
ls G*.txt|sed -e 's/G//g' -e 's/.txt//g'|while read a
do
mv G$a.txt gene$a.txt
done
# 看懂没?
# sed -n '1p' 先看 一个的效果咋样再全部修改
ls G*.txt|sed -e 's/G//g' -e 's/.txt//g'|sed -n '1p'|while read a
do
mv G$a.txt gene$a.txt
done
复习一哈之前的命令
这段命令是一个简单的 Shell 脚本,用于将以 "G" 开头并以 ".txt" 结尾的文件重命名。
-
ls G*.txt
:这部分命令使用ls
命令来列出当前目录中所有以 "G" 开头并以 ".txt" 结尾的文件。 -
sed -e 's/G//g' -e 's/.txt//g'
:这部分使用sed
命令来处理输出的文件列表。第一个-e
参数表示执行第一个替换操作,将文件名中的所有 "G" 替换为空字符串,即删除 "G"。第二个-e
参数表示执行第二个替换操作,将文件名中的 ".txt" 替换为空字符串,即删除 ".txt"。这样,我们得到的是没有 "G" 和 ".txt" 的纯文件名列表。 -
sed -n '1p'
:这部分使用sed
命令来提取处理后的文件名列表中的第一行。参数-n
表示只输出经过处理的内容,'1p'
表示输出第一行。 -
while read a
:这部分使用while
循环来逐行读取前面处理的第一行内容,并将内容赋值给变量a
。 -
do
:循环的开始,表示接下来要执行的操作。 -
mv G$a.txt gene$a.txt
:这部分使用mv
命令将原始文件名 "G a.txt"。这里的$a
是前面while
循环读取的文件名的内容。 -
done
:循环结束,表示循环体的结束。
无论是 for
循环还是 while
循环,都需要确保循环中的操作能够在某个条件下终止,以防止无限循环。在编写循环时,请确保适当地更新计数变量或条件,以确保循环会在合适的时机终止。
下期预告
得,还是画图的数据好,先整R语言画图的吧!大噶可以留言想要看的内容呀!
本文由 mdnice 多平台发布