shell-循环

article/2025/8/2 17:59:49

接上一篇shell运算符接着往下说,shell循环:

shell循环有三种,一种是for循环,一种是while循环,还有一种是until循环,循环体中和java类似,可以使用break调出当前循环,continue继续下一次循环。

  1. for循环
    for循环以for开始,循环体在do和done之间
    for循环有两种各式,一种是带in,一种是类似java的for循环:
    比如说输出0到10之间的整数,给出一个取自范围用{}:
#!/bin/bash
for x in {1..10}
doecho "x = $x"
done

也可以用seq命令产生整数,seq是shell中的一个命令用来产生整数,比如seq 1 5 表示产生1到5的整数,再比如seq 1 2 5 产生1到5步长为2的整数,就是产生 1 3 5三个整数 例如:

for y in $(seq 1 2 5)
doecho "y = $y"
done

结果为:

y = 1
y = 3
y = 5

类似java的循环,求1到10的和:学过java或者c的应该都懂是什么意思

SUM=0
for ((i=1; i<=10; i++))
doSUM=$[$SUM+$i]
done
echo "1-10 sum = $SUM"

简单的算术运算要用$(())或者$[],之前有说过

使用in的时候后面也可以是具体的命令执行结果,比如说打印出某一个目录下的所有文件:

for x in $(ls /home)
doecho $x
done

当然后面也可以是一个列表,比如:

for x in 1 2 3 4
doecho "x = $x"
done
  1. while循环
    while的循环的基本各式如下:
while 条件
do 循环体
done

条件满足执行,否则退出

比如求1到10 的和:

SUM=0
i=1
while((i<=10))
doSUM=$[$SUM+$i]let i++
done
echo "1-10 sum = $SUM"

上面有使用的一个let关键字,它和echo关键字一样,都是shell的命令,let是shell的计算工具,用于执行一个或多个表达式,变量计算过程中不需要加$,如果表达式包含了空格或者其他特殊字符必须要用引号引起来。
注意 while后面的条件语句可以是while((i<=10)),当然也可以使用 while [ $j -le $i ]
下面来个复杂点的,打印一下9x9乘法表

i=1
j=1
while((i<=9))
dowhile [ $j -le $i ]dolet sum="i * j"echo -n "$j * $i = $sum "let j++donelet i++let j=1echo ""
done

其中echo -n 加上-n表示的是在同一行输出,还有第二个while后面是[ $j -le i ] , 又 要 有 空 格 , 还 要 i ],又要有空格,还要 i]符号,明显感觉不友好,还是双括号好用,打印结果如下:

1 * 1 = 1 
1 * 2 = 2 2 * 2 = 4 
1 * 3 = 3 2 * 3 = 6 3 * 3 = 9 
1 * 4 = 4 2 * 4 = 8 3 * 4 = 12 4 * 4 = 16 
1 * 5 = 5 2 * 5 = 10 3 * 5 = 15 4 * 5 = 20 5 * 5 = 25 
1 * 6 = 6 2 * 6 = 12 3 * 6 = 18 4 * 6 = 24 5 * 6 = 30 6 * 6 = 36 
1 * 7 = 7 2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35 6 * 7 = 42 7 * 7 = 49 
1 * 8 = 8 2 * 8 = 16 3 * 8 = 24 4 * 8 = 32 5 * 8 = 40 6 * 8 = 48 7 * 8 = 56 8 * 8 = 64 
1 * 9 = 9 2 * 9 = 18 3 * 9 = 27 4 * 9 = 36 5 * 9 = 45 6 * 9 = 54 7 * 9 = 63 8 * 9 = 72 9 * 9 = 81 
  1. until 循环
    until循环的各式如下:
until 条件
do 循环体
done

until执行条件和while刚好相反,仔细品品,until的意思是直到什么什么,就是当符合条件的时候就退出了,而while则是符合条件则循环,比如求1到10的和:

sum=0
i=1
until((i>10))
dolet sum+=ilet i++
done
echo "1 - 10 sum = $sum"

未完待续!

欢迎关注我的微信公众号:北风中独行的蜗牛
在这里插入图片描述

参考文章
https://blog.csdn.net/taiyang1987912/article/details/38929069


http://chatgpt.dhexx.cn/article/WoBpB0kB.shtml

相关文章

linux\bash shell for命令\循环

内容来自《Linux命令行与shell脚本编程大全.第3版 (布鲁姆&#xff0c;布雷斯纳汉)》for命令 下面是基本格式&#xff1a; for var in list # 或者把do也写在这一行&#xff1a;for var in list; do docommands done例如&#xff0c;读取列表&#xff1a; for test in A…

linux用while循环输出1到10,Linux Shell系列教程之(十一)Shell while循环 | Linux大学...

摘要 在上一篇Linux Shell系列教程之(十)Shell for循环中&#xff0c;我们已经对Shell 循环语句的for循环进行了介绍&#xff0c;本篇给大家介绍下Shell 中另一种循环语句&#xff1a;Shell while循环。 在上一篇Linux Shell系列教程之(十)Shell for循环中&#xff0c;我们已经…

Linux命令行循环执行shell命令浅谈

本文主要介绍了Linux命令行&#xff0c;循环执行shell命令的相关知识&#xff0c;主要包括死循环&#xff0c;普通计数循环&#xff0c;以及Linux shell循环命令 while死循环的用法,需要的朋友可以参考下 Linux命令行&#xff0c;循环执行shell命令 死循环 命令格式 1 while t…

Linux中shell的循环语句

目录 一、循环语句 1、for循环语句 批量添加未存在的用户&#xff0c;用户名存放在users.txt文件中&#xff0c;每行一个初始密码均设为123456&#xff0c;新增users.txt 文件&#xff0c;vim users.txt 录入用户 2、while循环语句 通过变量RANDOM获得1-999随机数,提示用户猜测…

【LinuxShell】Shell编程之循环语句

文章目录 前言一、循环1.循环的作用2.循环和遍历 二、for循环语句1.for语句的用法2.for逻辑结构3.for语句的格式4.echo的用法5.for语句的典型案列 三、while循环语句1.while语句的用法2.while逻辑结构3.while语句的格式4.while语句的典型案例 四、until命令1.until语句的用法2.…

【Linux】:shell循环语句

运行Shell脚本有两种方法&#xff1a; 1、vi test.sh #! /bin/bash #编写内容 运行sh test.sh 2、chmod x ./test.sh #脚本具有执行权限 ./test.sh #执行脚本 if条件判断 单分支if条件&#xff1a; if [ 条件判断式 ]then程序 fi注意&#xff1a;中括号与条件判断式之间有空…

shell脚本循环执行一个linux命令,shell脚本编程之循环语句

在运行脚本时重复执行一系列的命令是很常见的&#xff0c;这时我们就需要使用循环语句来达到这个目的。 一、for命令 格式&#xff1a;for 变量 in 列表&#xff1b;do 循环体 done for命令会遍历列表中的每一个值&#xff0c;并且在遍历完成后退出循环。 列表形式有以下几种&a…

Linuxshell脚本之循环语句

目录 一、循环 1.循环的含义 2.重复运行次数 3.常见的循环命令 4.循环示意图 二、For语句 1.定义 2.表达式 &#xff08;1&#xff09;for循环 &#xff08;2&#xff09;算术for循环 &#xff08;3&#xff09;嵌套 ​ 三、while语句 1定义 2.格式 3.while循…

【Linux】 Shell循环

for循环遍历 { }C语言风格的for 遍历 while 循环 while test测试成立 do命令 donewhile : # 相当于while true until循环 与while 循环相反 until 循环 while test测试不成立 do命令 donecontinue & break 嵌套的时候 if 要和 fi 在一起 do 要和done 在一起 (相邻最…

二、马尔可夫决策过程与贝尔曼方程

这里写目录标题 1 马尔可夫性质2 马尔可夫过程3 马尔可夫奖励过程&#xff08;Markov reward process, MRP&#xff09;3.1 MRP的贝尔曼方程3.2 MRP的贝尔曼方程求解方法3.3 总结 4 马尔可夫决策过程&#xff08;Markov decision process, MDP&#xff09;4.1 MDP状态价值函数贝…

马尔可夫决策过程和贝尔曼方程

马尔可夫决策过程&#xff08;MDP)简介 下一个状态 S t 1 S_{t1} St1​是从概率分布P中得到的&#xff0c;该概率分布P取决于整个历史&#xff0c;因此我们需要考虑从 s 0 s_0 s0​开始到t时刻的状态。马尔可夫是具有马尔可夫性质的随机过程 定义 P [ S t 1 ∣ S t ] P [ …

贝尔曼方程(Bellman Equation)

贝尔曼方程&#xff08;Bellman Equation&#xff09;也被称作动态规划方程&#xff08;Dynamic Programming Equation&#xff09;&#xff0c;由理查贝尔曼&#xff08;Richard Bellman&#xff09;发现&#xff0c;由于其中运用了变分法思想&#xff0c;又被称之为现代变分法…

强化学习:贝尔曼方程(Bellman Equation)

∗ ∗ 重点&#xff1a;状态值、贝尔曼方程 ∗ ∗ **重点&#xff1a;状态值、贝尔曼方程** ∗∗重点&#xff1a;状态值、贝尔曼方程∗∗ return评估策略 在前面概念介绍中&#xff0c;我们知道了可以用 return 来评估一个策略的好坏。如图&#xff0c;有三个不同的策略&…

贝尔曼方程推导

马尔可夫的动态特性&#xff1a; 回报&#xff1a;&#xff08;两种定义&#xff09; 或 &#xff08;折扣率大于等于0小于等于1&#xff0c;折扣率决定了未来收益的现值&#xff09; 状态价值函数&#xff1a;从状态s开始&#xff0c;智能体按照策略π进行决策所获得回报的…

【机器学习】带你轻松理解什么是强化学习中的贝尔曼方程

系列文章目录 第十八章 Python 机器学习入门之强化学习 目录 系列文章目录 前言 一、什么是贝尔曼方程 二、贝尔曼方程为什么有用 三、贝尔曼方程是怎么来的 总结 前言 贝尔曼方程是强化学习中最重要的一个方程式。如果可以计算状态S 的状态动作函数 Q(s,a)&#xff0c…

强化学习/动态规划:贝尔曼方程的解读 Bellman Equation 贝尔曼方程组 / 贝尔曼最优方程

前言&#xff1a; 读书《Reinforcement Learning: An Introduction Second Edition》&#xff0c;读到第三章有限马尔科夫决策过程MDP中&#xff0c;提到了贝尔曼方程的理解。一开始我是有点懵逼的&#xff0c;现在看懂了其意思&#xff0c;在这里解释一下。 贝尔曼方程理解 下…

贝尔曼方程

贝尔曼方程在强化学习中无处不在&#xff0c;对于理解强化学习算法的工作原理是非常必要的。贝尔曼方程让我们可以开始解决MDPs问题。 贝尔曼期望方程 贝尔曼最优方程 将贝尔曼期望方程与贝尔曼最优方程进行对比&#xff0c;可以发现&#xff0c;贝尔曼期望方程是对于某一个给…

【RL】Bellman Equation 贝尔曼方程(动态规划)

参考&#xff1a;蘑菇书-《EasyRL》 本文只是为了方便自己今后的查阅对原文做出的一些概括。 马尔可夫奖励过程MRP 马尔可夫奖励过程是马尔可夫链加上奖励函数&#xff0c;奖励函数R是一个期望&#xff0c;表示到达某一个状态时可以获得多大的奖励。如果状态数是有限的&#x…

3.1 贝尔曼(bellman)方程

假设智能体观测到状态 s 0 s_0 s0​&#xff0c;并且有 N N N个可用action&#xff0c;每个action都会导致另一种状态&#xff0c;及相应的奖励。另外&#xff0c;假设我们知道与状态s0相连的所有状态的价值 V i V_i Vi​。在这种情况下&#xff0c;智能体可以采取的最佳行动是…

强化学习之贝尔曼方程

强化学习 强化学习注重智能体&#xff08;agent&#xff09;与环境之间的交互式学习&#xff1a; 强化学习的数据集不是训练初始阶段就有的&#xff0c;而是来自智能体与环境交互才能获得&#xff1b;强化学习不追求单步决策的最优策略&#xff0c;而是追求与环境交互获得的长…