Linux入门第五天——shell脚本入门(下)基础语法之循环
一、循环
1.不定循环
有两种形式:
while [ condition ] <==中括号内的状态就是判断式
do <==do 是循环的开始!
程序段落
done <==done 是循环的结束
当 condition 条件成立时,就进行循环,直
到 condition 的条件不成立才停止
until [ condition ]
do
程序段落
done
当 condition 条件成立时,就终止循环, 否则就持续
进行循环的程序段。
示例
#!/bin/bash
#描述:循环练习1
#作者:jiangbei on //
until [ "${yes}" == "yes" -o "${yes}" == "YES" ]
do
read -p "input yes/YES:" yes
done
echo "OK,you input the right word!"
示例:1+2+3+...+10的累加:
#!/bin/bash
#简介略
##########
declare i=
declare sum=
while [ ${i} -le ]
do
sum=$((${sum}+${i}))
i=$((${i}+))
done
echo "the total is ${sum}"
// 第一次把第8行的sum写成num,纠结了半天变量的写法,囧。更多的数值计算,参考:http://www.mamicode.com/info-detail-1324934.html
注意:同样,x权限添加等此处省略...(中括号的左右空格请注意!)
2.固定循环
与经典的for循环类似,此处不再赘述
列举值循环:
语法:
for var in con1 con2 con3 ...
do
程序段
done
1. 第一次循环时, $var 的内容为 con1 ;
2. 第二次循环时, $var 的内容为 con2 ;
3. 第三次循环时, $var 的内容为 con3 ;
示例:
#!/bin/bash
#略
for animal in dog cat horse
do
echo "The current animal is ${animal}"
done
数字式循环:
使用seq——seq 为 sequence(连续) 的缩写之意,更多seq相关的用法(可以使用反引号`seq 1000`,或者$( seq 1000 )),
参考:http://linux.51yip.com/search/seq
利用数字式改写累加示例如下:
#!/bin/bash
#略
declare -i sum=
for i in $(seq )
do
sum=$((${sum}+${i}))
done
echo "the total is ${sum}"
当然,还有另外一种写法:{1..100},这是bash内置的写法,并且支持{a..g}表示a到g及中间的字母!
最后,采用循环+判断的写法如下:
最后,让我们来玩判断式加上循环的功能!我想要让使用者输入某个目录文件名, 然后我找
出某目录内的文件名的权限,该如何是好?呵呵!可以这样做啦~
#!/bin/bash
#略
read -p "Please input a directory:" dir
if [ "${dir}" == "" -o ! -d "${dir}" ];then
echo "The ${dir} is not exist!"
exit
fi
filelist=$(ls ${dir})
for file in ${filelist}
do
perm=""
test -r "${dir}/${file}" && perm="${perm}r"
test -w "${dir}/${file}" && perm="${perm}w"
test -x "${dir}/${file}" && perm="${perm}x"
echo "the file ${dir}/${file} has the perm:${perm}"
done
输入/tmp就可以测试啦!
数值处理的循环:——熟悉的格式
for (( 初始值; 限制值; 执行步阶 ))
do
程序段
done
继续改写累加的示例:
#!/bin/bash
#略
declare -i sum=
for (( i=; i<=; i++))
do
sum=$((${sum}+${i}))
done
echo "the total is ${sum}"
再举一个数组的例子(数据类型介绍参考基本概念随笔)
#!/bin/bash
#略
#定义数组
list[]="糖醋排骨"
list[]="麻婆豆腐"
list[]="宫保鸡丁"
size=
check=$((${RANDOM} * ${size} / + ))
echo "your choice is ${list[${check}]}"
// shell有一个环境变量RANDOM,范围是0--32767
Linux入门第五天——shell脚本入门(下)基础语法之循环的更多相关文章
- Linux入门第五天——shell脚本入门(上)基本概念
一.什么是shell脚本 Shell 脚本(shell script),是一种为 shell 编写的脚本程序. 二.shell入门 1.先导知识 变量知识补充:https://www.cnblogs. ...
- Linux入门第五天——shell脚本入门(下)基础语法之调试debug
一.如何debug 1.通过sh命令的参数: sh [-nvx] scripts.sh 选项与参数: -n :不要执行 script,仅查询语法的问题: -v :再执行 sccript 前,先将 sc ...
- Linux入门第五天——shell脚本入门(中)基础语法之判断与条件
一.判断式 利用 test 命令进行执行结果的判断(例如判断是否存在该文件):关于test test:test 示例:结合回传值 $? 进行判断:关于$?:$? [root@localhost tm ...
- Linux入门第四天——shell基础
一.shell概述 1.概述 命令行解释器(壳,也就是我们的操作界面),计算机只认识0101的二进制,我们需要通过ASCII表来进行翻译 较为官方的解释是: Shell 是一个用 C 语言编写的程序, ...
- Linux Shell脚本入门--cut命令
Linux Shell脚本入门--cut命令 cut cut 命令可以从一个文本文件或者文本流中提取文本列. cut语法 [root@www ~]# cut -d'分隔字符' -f fields &l ...
- linux的shell脚本入门
Linux shell脚本入门教程 为什么要进行shell编程 在Linux系统中,虽然有各种各样的图形化接口工具,但是sell仍然是一个非常灵活 的工具.Shell不仅仅是命令的收集,而且是一门非常 ...
- Linux Shell脚本入门--wget 命令用法详解
Linux Shell脚本入门--wget 命令用法详解 wget是在Linux下开发的开放源代码的软件,作者是Hrvoje Niksic,后来被移植到包括Windows在内的各个平台上.它有以下功能 ...
- 【shell】shell脚本入门
1. 前言 1.1 为什么学习shell编程 Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具,Linux/UNIX系统的底层及基础应用软件的核心大部分涉及Shell脚 ...
- Linux学习Day6:编写Shell脚本
Shell脚本命令的工作方式有两种: 交互式(Interactive):用户每输入一条命令就立即执行. 批处理(Batch):由用户事先编写好一个完整的Shell脚本,Shell会一次性执行脚本中诸多 ...
随机推荐
- 13、Node.js 全局对象
主要用于调试,显示信息,重点看例子在浏览器 JavaScript 中,通常 window 是全局对象, Node.js 中的全局对象是 global ####__filename__filename ...
- mvvm模型
- swift动态库与use_frameworks
使用Dynamic 的优势: 模块化,相对于Static Library,Framework可以将模块中的函数代码外的资源文件打包在一起. 共享可执行文件 iOS 有沙箱机制,不能跨App间共享共态库 ...
- CSS(层叠样式表)基础知识
CSS 指层叠样式表 (Cascading Style Sheets).样式定义怎样显示 HTML 元素.它通常存储在样式表中,把样式加入到 HTML 4.0 中,解决内容与表现分离的问题. 当同一 ...
- [19/04/24-星期三] GOF23_创建型模式(建造者模式、原型模式)
一.建造者模式 本质:分离了对象子组件的单独构造(由Builder负责)和装配的分离(由Director负责),从而可以构建出复杂的对象,这个模式适用于:某个对象的构建过程十分复杂 好处:由于构建和装 ...
- [19/04/19-星期五] Java的动态性_脚本(Script,脚本)引擎执行JavaScript代码
一.概念 Java脚本引擎是jdk 6.0之后的新功能. 使得Java应用程序可以通过一套固定的接口与各种脚本引擎交互,从而达到在Java平台上调用各种脚本语言的目的. Java脚本API是连接Jav ...
- [转]MBTiles移动存储简介
首先奉上官网地址http://mapbox.com/developers/mbtiles/#storing_tiles 由于英文水平有限,看资料很费眼睛,特将它翻译成中文 存储瓦片 地图制作者面对一个 ...
- I、Q信号是如何产生的,I、Q信号复用的作用
接收机在中频部分实现模数变换和采样,采样后的信号和数字域的同频相乘,就可以得到基带的I.Q分量.在无线接口传输时,每一种使用特定的载波频率.码(扩频码和扰码)以及载波相对相位(I或Q)的信道都可以理解 ...
- sharepoint 配置个人网站容量
we have a SharePoint 2013 Standard edition implementation and 80 users. We are now starting to use M ...
- 小程序发微信红包后端Nodejs实现
前提条件 1.有一个微信开放平台 https://open.weixin.qq.com/ 2.有一个微信公众平台 https://mp.weixin.qq.com 并且开通微信支付 3.有一个微信小 ...