linux中shell的循环

article/2025/8/2 17:30:47

循环主要分为3种

1.for循环

for循环的基本语法结构是三步走

for                                                  ##条件do                                            ##要做什么
done                                                 ##结束

借几个脚本来理解一下 

1)10秒倒计时脚本

#!/bin/bash
for ((a=10;a>0;a--))
doecho -n " TIME $a"echo -ne "\r \r"sleep 1
done

 

2)如果想要自己输入的时间为倒计时呢

#!/bin/bash
read -p "please input the time you want count,eg 01 10   " i j
a=$i*60+$j
for ((b=$a;b>0;b--))
doecho -n " TIME $[b/60]:$[b%60] "echo -ne "\r"sleep 1
done

 

3)九九乘法表

#!/bin/bash##打印9*9乘法表
#1*1=1
#2*1=2 2*2=4
#3*1=3 3*2=6 3*3=9for i in $(seq 9)
dofor j in $(seq $i)doecho -ne "$i*$j=$(($i*$j))\t"doneecho -e "\n"
done

 

4)嵌套循环

#!/bin/bashfor((a=1;a<=3;a++))
doecho "Starting outside loop: $a"for((b=1;b<=3;b++))doecho "Inside loop: $b"done
done

 

2.if-else

if-else循环基本语法结构为

if            ;then                             ##条件1
elif          ;then                             ##条件2
........                                         ##可以有多个elif
else                                             ##最后的条件
fi                                               ##结束   

当然其中最简单的结构就是只有一个if和结尾的fi,再稍微复杂一点就是if-else-fi结构,比较复杂的就是上面代码段中的。

1)如果用话存在输出,hello+用户名

#!/bin/bash
user=kiosk
if grep $user /etc/passwd;then            echo "Hello $user"
fi

2)检测student用户是否存在,存在显示家目录的内容

#!/bin/bash
user=student
if grep $user /etc/passwd;thenecho "The files for user $user are:"ls -a /home/$user
elseecho "$user not exist!"
fi

 

3)查看是否被允许登陆

#!/bin/bashif [ "$1" == "student" ];thenecho "Welcome $1"
elif [ "$1" == "westos" ];thenecho "Welcome $1"
elif [ "$1" == "kiosk" ];thenecho "Welcome $1"
elif [ "$1" == "linux" ];thenecho "Welcome $1"
elseecho "You are not allowed!"
fi

 

3.while

while的基本语法结构为

while                                        ##条件do                                   ##做什么
done                                         ##结束 

1)新建westos{1..20}用户,并统一设置密码

#!/bin/bash
PREFIX="westos"
i=1
while [ $i -le 20 ]
douseradd -r  ${PREFIX}$i &> /dev/nullecho "123456" | passwd --stdin ${PREFIX}$i &> /dev/null       ##标准输入的方式更改密码((i++))
done

2)隔2秒输出依次系统启动时间

#!/bin/bash
while true
douptimesleep 2
done

 

4.case

case的结构如下面代码段中的程序

1)如果是允许用户输出允许,不是的话,输出sorry

#!/bin/bash
case $1 in 
student|kiosk|linux|westos)echo "Welcome,$1";;
*)echo "sorry!";;
esac

5.练习题

运用本节所学内容,写一个交互式程序

#!/bin/bash
while true                                    ##死循环
doecho -e "\033[31m A 显示主机IP \033[0m\033[32m B 显示磁盘剩余空间 \033[0m\033[33m C 显示系统运行时间 \033[0m\033[34m Q 退出系统 \033[0m
"
read -p "请输入你的选择:" charcase $char ina|A)ifconfig br0 | grep "inet " | awk '{print $2}';;b|B)df -h | awk 'NR==2{print "剩余空间大小为:"$4}';;c|C)uptime |awk '{print $3}' | awk -F, '{print $1}' | awk -F: '{print "系统已经运行了"$1"小时"$2"分钟"}';;q|Q)exit 0;;esac
done

OK~


http://chatgpt.dhexx.cn/article/8XGl67mm.shtml

相关文章

【Linux】shell编程之循环语句

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、循环语句二、for循环语句1.for 语句的结构2.for语句应用示例 三、while 循环语句1.while 循环语句结构2.while语句应用示例 四、until 循环五、跳出循环六、死循…

shell-循环

接上一篇shell运算符接着往下说&#xff0c;shell循环&#xff1a; shell循环有三种&#xff0c;一种是for循环&#xff0c;一种是while循环&#xff0c;还有一种是until循环&#xff0c;循环体中和java类似&#xff0c;可以使用break调出当前循环&#xff0c;continue继续下一…

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…