bash脚本(二)

for循环

for VAR in LIST; do

statements

...

done

LIST列表:

1、直接给出

2、数值列表

{start..end},如{1..10}

seq LAST

seq FIRST LAST

seq FIRST STEP LAST,如seq 1 2 10,会读取到13579

3、特殊变量$#,[email protected],$*

4、通过命令引用获取的参数列表,如($(grep ‘bash$‘ /etc/passwd | cut -d: -f3))

5、通配符读取目录 /tmp/test/*

通过命令引用获取的参数列表

  1. [[email protected] ~]# cat /root/test
  2. aa
  3. bb
  4. cc
  5. dd
  6. ee
  7. [[email protected] ~]# cat test.sh 
  8. #!/bin/bash
  9. declare -i x=1
  10. for i in `cat /root/test`; do
  11. echo "value$x$count:=$i"
  12. let x++
  13. done
  14. [[email protected] ~]# bash test.sh 
  15. value1:=aa
  16. value2:=bb
  17. value3:=cc
  18. value4:=dd
  19. value5:=ee

通配符读取目录

  1. [[email protected] ~]# cat test.sh 
  2. #!/bin/bash
  3. declare -i x=1
  4. for i in /tmp/*; do
  5. echo "value$x$count:=$i"
  6. let x++
  7. done
  8. [[email protected] ~]# bash test.sh 
  9. value1:=/tmp/test1
  10. value2:=/tmp/test2
  11. value3:=/tmp/test3
  12. value4:=/tmp/test

for的C风格

for (( variable assignment; condition; iteration process)); do

#statements

done

  1. #/bin/bash
  2. for (( a = 1,b=10; a <= 10; a++,b-- )); do
  3. echo "$a-$b"
  4. done

选择语句

单分支if语句

if [[ condition ]]; then

#statements TRUE

fi

if可以嵌套

if [[ condition ]]; then

if [[ condition ]]; then

#statements

fi

fi

双分支if语句

if [[ condition ]]; then

#statements TRUE

else

#statements FLASE

fi

多分支if语句,哪个condition为TRUE满足则执行下面的statements

if [[ condition ]]; then

elif [[ condition ]]; then

#statements

elif [[ condition ]]; then

#statements

else

#statements

fi

case语句

case word in

pattern )

;;

pattern )

;;

pattern )

;;

* )

;;

esac

pattern可使用通配符:

*:任意长度的任意字符

?: 任意单个字符

[]:指定范围内的任意单个字符

a|b: a或者b

  1. [[email protected] ~]# cat test.sh
  2. #!/bin/bash
  3. read -p "Enter a choice" choice
  4. case ${choice:-b} in
  5. a) echo "a";;
  6. b) echo "b";;
  7. c) echo "b";;
  8. esac
  9. [[email protected] ~]# bash test.sh 
  10. Enter a choice
  11. b

while,until语句

while [[ condition TRUE ]]; do

#statements

修正表达式否则会死循环

done

until [[ condition FALSE ]]; do

#statements

修正表达式否则会死循环

done

  1. 1x1=1 1x2=2 1x3=3 1x4=4 1x5=5 1x6=6 1x7=7 1x8=8 1x9=9
  2. 2x2=4 2x3=6 2x4=8 2x5=10 2x6=12 2x7=14 2x8=16 2x9=18
  3. 3x3=9 3x4=12 3x5=15 3x6=18 3x7=21 3x8=24 3x9=27
  4. 4x4=16 4x5=20 4x6=24 4x7=28 4x8=32 4x9=36
  5. 5x5=25 5x6=30 5x7=35 5x8=40 5x9=45
  6. 6x6=36 6x7=42 6x8=48 6x9=54
  7. 7x7=49 7x8=56 7x9=63
  8. 8x8=64 8x9=72
  9. 9x9=81
  10. #!/bin/bash
  11. declare -i i=1
  12. declare -i j=1
  13. while [[ $i -lt 10 ]]; do
  14.     let j=$i
  15.     until [[ $j -gt 9 ]]; do
  16. echo -e -n "${i}x${j}=$[$i*$j]\t"
  17. let j++
  18.     done
  19.     let i++
  20.     echo
  21. done
  1. 9x9=81
  2. 8x8=64 8x9=72
  3. 7x7=49 7x8=56 7x9=63
  4. 6x6=36 6x7=42 6x8=48 6x9=54
  5. 5x5=25 5x6=30 5x7=35 5x8=40 5x9=45
  6. 4x4=16 4x5=20 4x6=24 4x7=28 4x8=32 4x9=36
  7. 3x3=9 3x4=12 3x5=15 3x6=18 3x7=21 3x8=24 3x9=27
  8. 2x2=4 2x3=6 2x4=8 2x5=10 2x6=12 2x7=14 2x8=16 2x9=18
  9. 1x1=1 1x2=2 1x3=3 1x4=4 1x5=5 1x6=6 1x7=7 1x8=8 1x9=9
  10. #!/bin/bash
  11. declare -i i=9
  12. while [[ $i -gt 0 ]]; do
  13.     j=$i
  14.     until [[ $j -gt 9 ]]; do
  15. echo -e -n "${i}x${j}=$[$i*$j]\t"
  16. let j++
  17.     done
  18.     echo 
  19.     let i--
  20. done

while的特殊用法

  1. [[email protected] ~]# cat /tmp/test aa aa aa aa bb bb bb bb cc cc cc cc
  2. #!/bin/bash
  3. count=1
  4. cat /tmp/test | while read line; do
  5. echo "Line $count:$line"
  6. let count++
  7. done
  8. #!/bin/bash
  9. count=1
  10. while read line; do
  11. echo "Line $count:$line"
  12. let count++
  13. done < /tmp/test
  14. 2个脚本的效果一样
  15. Line 1:aa aa aa aa
  16. Line 2:bb bb bb bb
  17. Line 3:cc cc cc cc

break可以退出进行中的循环的一个简单方法

  1. [[email protected] ~]# cat test.sh 
  2. #!/bin/bash
  3. for i in {1..10}; do
  4.     if [ $i -eq 5 ];then
  5. break
  6.     fi
  7.     echo "$i"  
  8. done
  9. [[email protected] ~]# bash test.sh 
  10. 1
  11. 2
  12. 3
  13. 4

continue命令是提早结束执行循环内部的命令但不完全终止整个循环的一个途径

  1. [[email protected] ~]# cat test.sh
  2. #!/bin/bash
  3. for i in {1..15}; do
  4. if [[ $i -gt 1 ]] && [[ $i -lt 14 ]]; then
  5. continue
  6. fi
  7. echo "$i"
  8. done
  9. [[email protected] ~]# bash test.sh
  10. 1
  11. 14
  12. 15
时间: 2024-08-03 15:35:18

bash脚本(二)的相关文章

Linux学习笔记--bash脚本编程之二、条件判断

 bash脚本编程之二.条件判断 条件判断: 如果用户不存在 添加用户,给密码并显示添加成功: 否则 显示用户已存在,没有添加 bash中如何实现条件判断? 整数测试 字符测试 文件测试 条件测试的表达式:     [expression]     [[expression]]     test expression 整数比较: -eq:测试两个整数是否相等:比如 $A -eq $B     -ne:测试两个整数是否不等:不等,为真:相等,为假:     -qt:测试一个数是否大于另一个数:大于

Linux系统裁剪之二(Bash脚本编程之十二)

Linux系统裁剪之二(Bash脚本编程之十二) 系统函数库 ·Linux系统的启动流程     1,POST(加电自检) 计算机本身并不会执行程序,它只是一堆破铜烂铁,但是它可以在开机的时候先去载入一段程序,系统在刚刚启动的时候能够实现将某个ROM芯片中的程序映射到CPU能够寻址的地址空间中去,并且让CPU能够执行其中的指令,这些指令大部分都是用来做系统检测的,当检测完成后,如果系统中所有的基本硬件和核心硬件都没有问题的话,接下来就会根据BIOS中设定的系统启动次序(Boot Sequence

Linux Bash脚本基本语法知识

写在前面:如果此文有幸被某位朋友看见并发现有错的地方,希望批评指正.如有不明白的地方,愿可一起探讨. 前提:读者能够基本使用一款文本编辑器以及了解文件的权限概念. 准备工作 在/home目录创建script文件用于保存所有的脚本程序: # mkdir /home/script # cd /home/script/ Bash脚本的基本输入输出 第一个bash脚本: # vim ./hello-world.sh 说明: "#!"是一个约定标记,它告诉系统这个脚本需要什么解释器来执行 作为可

Linux应用环境实战10:Bash脚本编程语言中的美学与哲学(转)

阅读目录 一.一切皆是字符串 二.引用和元字符 三.字符串从哪里来.到哪里去 四.再加上一点点的定义,就可以推导出整个Bash脚本语言的语法了 五.输入输出重定向 六.Bash脚本语言的美学:大道至简 总结: 我承认,我再一次地当了标题党.但是不可否认,这一定是一篇精华随笔.在这一篇中,我将探讨Bash脚本语言中的美学与哲学. 这不是一篇Bash脚本编程的教程,但是却能让人更加深入地了解Bash脚本编程,更加快速地学习Bash脚本编程. 阅读这篇随笔,不需要你有Bash编程的经验,但一定要和我一

bash脚本编程之变量、变量类型、条件测试、算术运算、及特殊变量

一.学习目的 1.了解bash脚本的变量类型及变量的使用 2.了解bash中条件测试的种类及如何在bash中实现条件的判断 3.学会在bash中做算术运算 4.了解特殊变量的使用 二.学习内容 1). ①.bash的变量类型: 环境变量 .本地变量.局部变量.位置变量.特殊变量 环境变量: export VALUENAME = VALUE 作用领域是当前的shell进程及其子进程 本地变量: VALUENAME= VALUE 作用领域为整个bash的进程 局部变量:local VALUENAME

压缩工具及bash脚本编程

回顾: RAID: 不同的服务器配置起来他的借口可能配置起来有所不同,但是官方一般都提供响应的说明书,按照说明书进行配置就行.关键是理解RAID级别的机制的意义是什么 LVM: 其实是一个逻辑设备他存在的主要作用是提供卷管理操作,我们称之为"volume", 卷管理操作的目的主要是实现把一个或多个底层的物理设备给组织成一个逻辑设备,我们可以将底层的任何类型的块设备,包括我们常见的基本磁盘分区,或者甚至是RAID都OK,只要他们提供块级别的存储空间,但是考虑到任何单个硬件设备他们的边界都

bash脚本编程进阶篇

bash脚本编程进阶篇   函数.数组.字符串操作 一.函数:脚本编程中的函数与我们数学中的函数有着根本区别.这里的函数主要是为了实现过程式编程代码重用的作用.比如一个用于计算数字的函数,当我们需要使用计算数字的时候,直接调用这个函数过来而不必每一次计算数字都要自己重新写一次.因此,函数的主要功能可以概括为:便于实现模块化编程:便于代码的重用:使程序简洁.我们定义函数,可以分两种两种结构. 第一种函数结构,用function声明一个函数,后跟函数名.函数体用花括号括起来.第二种结构是用函数名跟小

bash脚本编程详细剖析

bash脚本编程详细剖析          背景:bash脚本编程是Linux学习一个至关重要的部分,想完成一个脚本可能很简单:但是想让自己的脚本写的让人觉得心旷神怡实为不简单.bash是所有Linux发行版的几乎都有的,因此我们这里以bash脚本为例,讨论bash脚本的编写方法.对于bash脚本编程中一些比较重要的知识点,我这里也会给予案例演示. 一.脚本编程中前话: 我们都知道,bash脚本编程说白了就是命令的堆积.只不过这种堆积的方式不是杂乱无章的堆积,而是按照一定要求和格式的链接.这说明

十分钟完成Bash 脚本进阶!列举Bash经典用法及其案例

前言:在linux中,Bash脚本是很基础的知识,大家可能一听脚本感觉很高大上,像小编当初刚开始学一样,感觉会写脚本的都是大神.虽然复杂的脚本是很烧脑,但是,当我们熟练的掌握了其中的用法与技巧,再多加练习,总有一天也会成为得心应手的脚本大神.脚本在生产中的作用,想必小编我不说,大家也都知道,脚本写的6,可以省下很多复杂的操作,减轻自己的工作压力.好了,废话不多说,接下来,就是Bash脚本的用法展示. 一.条件选择.判断(if·.case) 二.四个循环(for.while.until.selec

bash 脚本

一 创建shell脚本 1 创建包含bash命令的文本文件 #!/bin/bash###写在文件的第一行,说明用什么解释器,来解释以下写的内容### 2 chmod  +x scripts 3  将文件放置在用户的$PATH的目录中 ~/bin – 用于用户的私有程序 /usr/local/bin – 本地开发.系统上的其他人使用的脚本 /usr/local/sbin - 本地开发.由root使用的脚本 直接运行脚本和使用source命令运行脚本是不同的! [[email protected]