Shell脚本学习-for循环结构1

news2024/11/15 13:58:50

for循环语句主要用于执行次数有限的循环,而不是用于守护进程和无限循环。

语法结构:

for 变量名 in 变量取值列表
do
     指令...
done

提示:in 变量值列表 可以省略,省略就相当于 in "$@",也就是使用for i in "$@"。

语法说明:变量名依次获取in 关键字后面的变量取值列表内容(以空格分隔),每次取一个值,然后进入循环体内执行所有命令。然后执行到done结束本次循环,之后,变量名再继续获取变量取值列表中的下一个值,继续执行循环内的所有指令,直到取完变量取值列表的最后一个值并进入循环执行done结束为止。

有点类似“遍历”变量取值列表的意思。

第二种:C语言型for循环语句:

for((expr1; expr2; expr3))
do
    指令...
done

说这个语法结构比while语句更规范、更工整。实际工作中使用for的机会更多。

示例1:

[root@vm1 scripts]# cat for1.sh
#!/bin/bash

for((i=1;i<=3;i++))
do
    echo $i
done
[root@vm1 scripts]# sh for1.sh
1
2
3

说明:直到循环次数,是有限次循环,则多用for循环,实际工作中使用for的机会更多。

示例2:直接列出元素的方法。

[root@vm1 scripts]# cat for2.sh
#!/bin/bash

for i in 5 4 3 2 1
do
    echo $i
done
[root@vm1 scripts]# sh for2.sh
5
4
3
2
1

示例3:利用大括号生成数字序列的方法:

[root@vm1 scripts]# cat for3.sh
#!/bin/bash
#

for i in {5..1}
do
    echo $i
done

[root@vm1 scripts]# sh for3.sh
5
4
3
2
1

示例4:利用seq生成数字序列:

[root@vm1 scripts]# cat for4.sh
#!/bin/bash

for i in $(seq 5 -1 1)
do
    echo $i
done
[root@vm1 scripts]# sh for4.sh
5
4
3
2
1

man seq:

示例5:获取当前目录中的目录或者文件,并将其作为变量列表打印输出:

[root@vm1 scripts]# cat for5.sh
#!/bin/bash

cd /test
for filename in $(ls)
do
   echo $filename
done
[root@vm1 scripts]# sh for5.sh
test1.txt
test2.txt
test3.txt
test4.txt
test5.txt

示例6:用for循环批量修改文件拓展名(把txt改成jpg):

[root@vm1 scripts]# cat for6.sh
#!/bin/bash

cd /test
for filename in $(ls |grep "txt$")
do
   mv $filename `echo $filename|cut -d . -f1`.gif
done
[root@vm1 scripts]# cd /test
[root@vm1 test]# ll
total 0
-rw-r--r-- 1 root root 0 Aug  4 00:30 test1.gif
-rw-r--r-- 1 root root 0 Aug  4 00:30 test2.gif
-rw-r--r-- 1 root root 0 Aug  4 00:30 test3.gif
-rw-r--r-- 1 root root 0 Aug  4 00:30 test4.gif
-rw-r--r-- 1 root root 0 Aug  4 00:30 test5.gif

示例7:使用reanme命令进行修改:

 rename命令讲解:

rename 参数1 参数2 参数3

参数1:原字符串:将文件名需要替换的字符串;

参数2:目标字符串:将文件名中含有的原字符替换成目标字符串;

参数3:文件:指定要改变文件名的文件列表。

我们完全可以使用mv命令逐个去改,但是使用rename这个命令效率更好。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/833119.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

企业大数据可视化案例专题分享-入门

一、什么是数据可视化&#xff1f; 基本概念&#xff1a;数据可视化是以图示或图形格式表示的数据。让决策者可以看到以直观方式呈现的分析&#xff0c;以便他们可以掌握困难的概念或识别新的模式。借助交互式可视化&#xff0c;可以使用技术深入挖掘图表和图形以获取更多详细…

Java版工程项目管理系统平台+企业工程系统源码+助力工程企业实现数字化管理 em

鸿鹄工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离构建工程项目管理系统 1. 项目背景 一、随着公司的快速发展&#xff0c;企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性&#xff0c;公司对内部工程…

IO进程线程第六天(8.3)线程,线程函数+XMind

创建两个线程&#xff1a;其中一个线程拷贝前半部分&#xff0c;另一个线程拷贝后半部分。 只允许开一份资源&#xff0c;且用互斥锁方式实现。 #include<stdio.h> #include<head.h> #include<pthread.h> struct file {int fp; int fq; off_t size; }; pth…

什么?你还没有用过JPA Buddy,那么你工作肯定没5年

1. 概述 JPA Buddy是一个广泛使用的IntelliJ IDEA插件&#xff0c;面向使用JPA数据模型和相关技术&#xff08;如Spring DataJPA&#xff0c;DB版本控制工具&#xff08;Flyway&#xff0c;Liquibase&#xff09;&#xff0c;MapStruct等&#xff09;的新手和有经验的开发人员…

投资圈爆火的文心杯创业大赛,大模型三大趋势值得关注!

“百模大战”打响&#xff0c;掀起大模型领域“创业热潮”。今年5月31日&#xff0c;百度启动“文心杯”创业大赛&#xff08;后简称“大赛”&#xff09;&#xff0c;不到1个月报名时间&#xff0c;吸引近1000个项目激烈角逐&#xff0c;在知名投资人和AI专家的权威评审和层层…

8 网络通信(下)

文章目录 wireshark 抓包工具的快速入门TCP/IP 协议详解TCP/IP 协议概述部分协议补充 OSI 参考模型及 TCP/IP 参考模型以太网帧格式ARP 数据报格式IP 段格式ICMP 协议TCP协议UDP 协议MTU和MSS补充 产品模式【C/S B/S】C/S 模式B/S 模式 DDOS简单介绍&#xff08;SYN Flooding&a…

【暑期每日一练】 day13

目录 选择题 &#xff08;1&#xff09; 解析&#xff1a; &#xff08;2&#xff09; 解析&#xff1a; &#xff08;3&#xff09; 解析&#xff1a; &#xff08;4&#xff09; 解析&#xff1a; &#xff08;5&#xff09; 解析&#xff1a; 编程题 题一…

Spring Cloud Feign+Ribbon的超时机制

在一个项目中&#xff08;数据产品&#xff09;&#xff0c;需要对接企业微信中第三方应用。在使用 Feign 的去调用微服务的用户模块用微信的 code 获取 access_token 以及用户工厂信息时出现 Feign 重试超时报错的情况&#xff0c;通过此篇文章记录问题解决的过程。 一、问题重…

探究Vue源码:mustache模板引擎(9) 将单层无喜欢结果tokens转为dom字符串

好 我们前面几篇文章 已经编写完了 将dom结构的模板字符串转为 tokens 数据结构的代码 那么 现在 我们就需要用tokens 结合数据 去生成dom字符串 我们先来研究一下我们的模板字符串与数据结构 首先 数据从这个data中去拿 然后 模板字符串语句中 先是 利用对象中的students 循环…

redis五种数据类型介绍

、string&#xff08;字符串&#xff09; 它师最基本的类型&#xff0c;可以理解为Memcached一模一样的类型&#xff0c;一个key对应一个value。 注意&#xff1a;一个键最大能存储 512MB。 特性&#xff1a;可以包含任何数据,比如jpg图片或者序列化的对象,一个键最大能存储512…

【动态规划算法】-回文串问题题型(34-40题)

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树&#x1f388; &#x1f389;作者宣言&#xff1a;认真写好每一篇博客&#x1f4a4; &#x1f38a;作者gitee:gitee✨ &#x1f49e;作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 动态规划算法&#x1f384; 如 果 你 …

动态规划笔记(一)

动态规划&#xff08;Dynamic Programming&#xff0c;DP&#xff09;是求解决策过程最优化的过程&#xff0c;通过把原问题分解为相对简单的子问题的方式求解复杂问题&#xff0c;在数学、管理科学、计算机科学、经济学和生物信息学等领域被广泛使用。 它的基本思想非常简单&…

SpringBoot整合Caffeine

一、Caffeine介绍 1、缓存介绍 缓存(Cache)在代码世界中无处不在。从底层的CPU多级缓存&#xff0c;到客户端的页面缓存&#xff0c;处处都存在着缓存的身影。缓存从本质上来说&#xff0c;是一种空间换时间的手段&#xff0c;通过对数据进行一定的空间安排&#xff0c;使得下…

java:解决报错非法字符: ‘\ufeff‘以及什么是BOM

背景 运行 JAVA 项目后&#xff0c;报错提示&#xff1a;非法字符: \ufeff&#xff0c;如图&#xff1a; 但是我在这个报错的文件中并没有搜到这个字符&#xff0c;那到底是什么原因 什么是BOM BOM&#xff08;Byte Order Mark&#xff09;&#xff0c;隐藏字符&#xff0c…

5、二叉树

二叉树遍历 递归序 public static void f(Node head) {if (head == null) {return;}f(head.left);f(head.right); }前中后遍历_递归 public static void preOrderRecur(Node head) {if (head == null) {return;}System.out.print(head.value + " ");preOrderRecur…

智慧防汛,数字科技的力量

随着夏日的脚步临近&#xff0c;台风季节即将降临。对于那些居住在沿海地区的人们来说&#xff0c;台风是一种常见的自然灾害&#xff0c;其带来的风雨可能对生命和财产造成严重威胁。然而&#xff0c;随着数字科技的飞速发展&#xff0c;可视化技术为防汛抗台工作带来了全新的…

6个非常实用的漫画素材网站,设计师必看

对于漫画设计师来说&#xff0c;漫画素材网站是必不可少的&#xff0c;今天本文将与大家分享6个好用的漫画素材网站&#xff0c;帮助设计师实现优质创作&#xff0c;一起来看看吧&#xff01; 1、即时设计 即时设计是更适合国内设计师使用的图像设计工具&#xff0c;在它的【…

if语句实现成绩等级判断

if语句实现成绩等级判断 案例分析代码实现小结Time 案例分析 使用键盘输入一个成绩&#xff0c;然后通过if判断语句实现成绩等级的判断 代码实现 import java.util.Scanner;public class DetermineDemo {public static void main(String[] args) {Scanner scanner new Scanne…

在线五子棋对战

目录 数据管理模块&#xff08;数据库设计&#xff09; 前端界面模块 业务处理模块 会话管理模块网络通信模块(session,cookie) 在线管理模块 房间管理模块 用户匹配模块 项目扩展 数据管理模块&#xff08;数据库设计&#xff09; 数据库中有可能存在很多张表&#xf…

SystemC的调度器

文章目录 前言调度器初始化evaluatewait updatenotify delta notificationtime notification仿真结束 前言 SystemC是基于C的库&#xff0c;主要用来对 IC 进行功能建模和性能建模。有时也被用来当做 RTL (register transfer level) 级的升级版 HLS(High Level synthesis) 直接…