首页 > 系统相关 >Shell | 循环语句

Shell | 循环语句

时间:2023-07-13 10:56:05浏览次数:29  
标签:语句 do Shell love sh echo 循环 done banzhang

for循环

基本语法 1:

for (( 初始值;循环控制条件;变量变化 ))
do
	程序
done

例子:从 1 加到 100

$ touch for1.sh
$ vim for1.sh
#!/bin/bash
sum=0
for((i=0;i<=100;i++))
do
sum=$[$sum+$i]
done
echo $sum
$ chmod 777 for1.sh
$ ./for1.sh
5050

基本语法 2:

for 变量 in 值 1 值 2 值 3…
do
	程序
done

例如:

(1)打印所有输入参数

$ touch for2.sh
$ vim for2.sh
#!/bin/bash
#打印数字
for i in cls mly wls
do
echo "ban zhang love $i"
done
$ chmod 777 for2.sh
$ ./for2.sh
ban zhang love cls
ban zhang love mly
ban zhang love wls

(2)比较$*$@区别

$*$@都表示传递给函数或脚本的所有参数,不被双引号“”包含时,都以$1 $2 …$n的形式输出所有参数。

$ touch for3.sh
$ vim for3.sh
#!/bin/bash
echo '=============$*============='
for i in $*
do
echo "ban zhang love $i"
done
echo '=============$@============='
for j in $@
do
echo "ban zhang love $j"
done
$ chmod 777 for3.sh
$ ./for3.sh cls mly wls
=============$*=============
banzhang love cls
banzhang love mly
banzhang love wls
=============$@=============
banzhang love cls
banzhang love mly
banzhang love wls

当它们被双引号“”包含时,$*会将所有的参数作为一个整体,以“$1 $2 …$n”的形式输出所有参数;$@会将各个参数分开,以“$1” “$2”…“$n”的形式输出所有参数。

$ vim for4.sh
#!/bin/bash
echo '=============$*============='
for i in "$*"
#$*中的所有参数看成是一个整体,所以这个 for 循环只会循环一次
do
echo "ban zhang love $i"
done
echo '=============$@============='
for j in "$@"
#$@中的每个参数都看成是独立的,所以“$@”中有几个参数,就会循环几次
do
echo "ban zhang love $j"
done
$ chmod 777 for4.sh
$ ./for4.sh cls mly wls
=============$*=============
banzhang love cls mly wls
=============$@=============
banzhang love cls
banzhang love mly
banzhang love wls

while 循环

基本语法:

while [ 条件判断式 ]
do
	程序
done

例如:从 1 加到 100

$ touch while.sh
$ vim while.sh
#!/bin/bash
sum=0
i=1
while [ $i -le 100 ]
do
sum=$[$sum+$i]
i=$[$i+1]
done
echo $sum
$ chmod 777 while.sh
$ ./while.sh
5050

标签:语句,do,Shell,love,sh,echo,循环,done,banzhang
From: https://www.cnblogs.com/zhangxuegold/p/17549790.html

相关文章

  • Shell | 判断语句
    if判断基本语法:(1)单分支if[条件判断式];then 程序fi或者if[条件判断式]then 程序fi(2)多分支if[条件判断式]then 程序elif[条件判断式]then 程序else 程序fi注意事项:​ ①[条件判断式],中括号和条件判断式之间必须有空格​ ②if后要有空格......
  • python-pymysql-类对象映射为sql语句
    查询语句importpymysqlclassUserQuery:def__init__(self,name=None,age=None,email=None):self.name=nameself.age=ageself.email=emaildefselect_data(table,condition):#连接到数据库connection=pymysql.connec......
  • 1.8 运用C编写ShellCode代码
    在笔者前几篇文章中,我们使用汇编语言并通过自定位的方法实现了一个简单的MessageBox弹窗功能,但由于汇编语言过于繁琐在编写效率上不仅要考验开发者的底层功底,还需要写出更多的指令集,这对于普通人来说是非常困难的,当然除了通过汇编来实现ShellCode的编写以外,使用C同样可以实现编写,......
  • 使用SQL语句写递归查询
    要编写递归SQL语句,你可以使用通用表达式(CommonTableExpressions,CTE)和递归查询功能。CTE允许在SQL查询中定义临时的命名查询,并且可以在查询内部引用自身。以下是一个示例来演示如何编写递归SQL语句:假设有一个员工表employees,其中包含列id、name和manager_id,表示员工......
  • ansible shell模块简单使用
    ansibleshell模块简单使用参数参数说明chdir运行命令前先CD到该目录cmd运行的命令creates存在某个文件就不运行命令executable更改执行命令的shell路径,需要是绝对路径free_formTheshellmoduletakesafreeformcommandtorun,asastring.The......
  • 事件循环
    1.何为进程(在哪运行代码浏览器中的进程中)  程序运行需要有他自己专属的内存空间,内存空间---进程  每个应用至少一个进程,进程之间相互独立,即使要通信,也要双方同意2.何为线程(谁来运行代码线程)  一个进程至少一个线程,进程开启之后会自动创建一个线程来运行......
  • 从nextTick开始认识事件循环
    导读在vue中,我们经常使用nextTick获取到最新的dom元素或者组件实例。至于原因,在于vue使用了异步DOM渲染更新机制,无论组件状态同步变化多少次,其相应的副作用总会被缓存在一个异步任务队列中,在下一次"tick"中才一起执行,也就是仅执行了一次更新。本文就是要探讨这样做的原因和其背......
  • Shell 编程常用参考
    Shell特殊变量$0,$#,$*,$@,$?,$$和命令行参数Shell中的特殊变量参考如下表:变量含义$0当前脚本的文件名$n传递给脚本或函数的参数。n是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2$#传递给脚本或函数的参数个数$*传递给脚本或函数......
  • MySql开启日志 --记录每条执行的SQL语句
    --第一条SETGLOBALlog_output='TABLE';SETGLOBALgeneral_log='ON';--在重启mysql重启Mysql详情请看:(10条消息)如何重启MySQL,正确启动MySQL_mysqlrestart_wuyepiaoxue789的博客-CSDN博客--重启完成之后可以去数据库`Mysql`中的general_log表里查看,也可以执行一下的......
  • linux shell脚本实现删除连续的空行为一行
     001、awk实现[root@PC1test02]#lsa.txt[root@PC1test02]#cata.txt##测试数据010203040506070809101112131415161718192021222324252627282930##将多个连续的空行压缩为一个空行[root@PC1tes......