关键词:
shell的控制结构:条件结构、分支结构、循环结构
if,条件结构
if 表达式 then 命令表 [else 命令表] fi 可以使用分号将多个命令在一行内进行组合。因此,处于美观和节省空间的考虑,上述格式简写为: if 表达式; then 命令表 [else 命令表] fi
if语句可以无限嵌套
if 表达式 then 命令表 [elif 表达式 then 命令表] ... ... [else 命令表] fi
可以直接命令表换成一个if条件语句
case结构
case 表达式 in 模式11[|模式12]...) 命令表1;; 模式21[|模式22]...) 命令表2;; ... *) 命令表n;; esac
示例
1 #! /bin/bash 2 #filename:a.sh 3 case $1 in 4 dir | path) echo "Current path is `pwd`";; 5 date | time) echo "Today is `date`";; 6 *) echo "Invalid argument!!" 7 echo "Enter argument: dir/path/date/time";; 8 esac
case和if语句一样,可以嵌套
select结构
select循环结构,可以以一种更简便的方式生成菜单。生成的菜单有编号,在用户输入选择的编号后,可根据用户的选择执行相应的代码。
select 变量 in 列表 do 命令表 done
列表,是一个由字符串组成的序列。
使用select结构将会在屏幕上生成一个数字化的菜单,并提示用户进行选择,默认的提示符为#。用户只需要在提示符下输入对应的数字,即可完成选择。
通常,select总是与case结构一起使用,允许用户在菜单中选择,并基于选择执行相应的命令。
select结构是一种循环,需要使用break命令退出循环,也可以使用exit命令结束脚本。
示例
1 #! /bin/bash 2 #filename:a.sh 3 echo "---------select one week plan---------" 4 select N in Mon Tue Wed Thu Fri Sat Sun 5 do 6 case $N in 7 Mon) echo "Monday";; 8 Tue) echo "Tuesday";; 9 Wed) echo "Wednesday";; 10 Thu) echo "Thursday";; 11 Fri) echo "Friday";; 12 Sat) echo "Saturday";; 13 Sun) echo "Sunday";; 14 *) echo "wrong" 15 break;; 16 esac 17 done
使用sh a.sh运行脚本时,显示select: not found。 需要使用bash a.sh来运行脚本
# bash a.sh ---------select one week plan--------- 1) Mon 2) Tue 3) Wed 4) Thu 5) Fri 6) Sat 7) Sun #? 1 Monday #?
while循环
while 表达式 do 命令表 done
while循环可嵌套
示例
1 #! /bin/bash 2 #filename:a.sh 3 i=1 4 while [ $i -le 10 ] 5 do 6 echo "i=$i" 7 i=$(($i+1)) 8 done
注,while后面的[],[后面有空格,]前面有空格,不然会出错。
for循环
for 变量 [ in 列表 ] do 命令表 done
示例
1 #! /bin/bash 2 #filename:a.sh 3 for i in 1 2 3 4 5 6 4 do 5 echo "i=$i" 6 i=$(($i+1)) 7 done
如果省略了“in 列表”,则for会将当前执行脚本中的每个位置参数作为“列表”,一次执行列表中的一个。即“for 变量”隐含表示“for 变量[email protected]”。
示例(arg,可以是任何名字,不是固定的)
1 #! /bin/bash 2 #filename:a.sh 3 i=1 4 for arg 5 do 6 echo "i=$i,parameters: $arg" 7 i=$(($i+1)) 8 done
until循环
until是在条件为假时继续执行循环,在条件为真时,停止执行。
until 命令表1 test 表达式 do 命令表2 done
示例
1 #! /bin/bash 2 #filename:a.sh 3 i=1 4 echo "Please enter the number N:" 5 read N 6 until 7 test $i -ge $N 8 do 9 echo "i=$i" 10 i=$(($i+1)) 11 done
break语句
break语句,可以结束while、for、until或者select等结构的执行,即从结构中跳出。退出循环后,将转到done语句后继续执行。
如果有多层结构嵌套,还可以在break关键字后面加上数字,指明要跳出的结构的层数。例如,break 2
示例
1 #! /bin/bash 2 #filename:a.sh 3 i=1 4 echo "Please enter the number N:" 5 read N 6 until 7 test $i -ge $N 8 do 9 if [ $i -le 4 ];then 10 echo "hello" 11 i=$(($i+1)) 12 else 13 echo "i=$i" 14 echo "world" 15 break 16 fi 17 done
continue语句
continue语句和break用法相同,用来跳过本次循环中剩余的代码。
3.98.10-8.13听课笔记
Shell特殊符_cut命令 特殊符号: *任意个字符?任意一个字符#注释字符(在配置文件的命令前加#则命令不生效;shell脚本某一行加#则这一行不被执行,通常是注释)[[email protected]~]##ls-a[[email protected]~]#\脱义字符[[ema... 查看详情
管道符和作业控制,shell变量,环境变量配置
笔记内容:8.6管道符和作业控制8.7/8.8shell变量8.9环境变量配置文件笔记日期:2017.8.15 8.6管道符和作业控制650)this.width=650;"src="https://s5.51cto.com/wyfs02/M00/A7/37/wKioL1njizSQWm3JAAx4dwWB65M564.png"style="float:none;"title="管道符和 查看详情
大数据讲课笔记6.5zookeeper的shell操作
文章目录零、学习目标一、导入新课二、新课讲解(一)ZooKeeperShell概述(二)通过Shell命令操作ZooKeeper1、显示所有操作命令2、查看当前ZK内容3、查看当前节点数据4、创建节点5、获取节点6、修改节点7、监听节点... 查看详情
shell笔记2
shell类型:BourneShell、BourneAgainShell、CShell、KornShell、Perlshell用户可以选择自己喜欢的shell(在系统管理员为用户创建账户时指定),在/etc/passwd文件最后一个字段中可以看到用户当前使用的shell的名称使用grep命令查看/etc/passwd文件,... 查看详情
shell笔记
#!C:Gitinash#a=‘123‘;#echo"thevaris${a}";a=‘123‘#设定只读#readonlya#a=456#echo$a#unseta删除变量#打印字符串长度#echo${#a};#echo$PATH访问环境变量#提取子字符串#a=‘aaaa‘#echo${a:1:2}#string="alibabaisagreatcompany"#echo`exprin 查看详情
大数据讲课笔记4.3hdfs的shell操作(代码片段)
文章目录零、学习目标一、导入新课二、新课讲解(一)HDFS的Shell介绍(二)了解HDFS常用Shell命令1、三种shell命令方式2、FileSystemShell文档3、常用HDFS的shell命令(三)HDFS常用命令操作实战1、创建目录(... 查看详情
大数据讲课笔记4.3hdfs的shell操作(代码片段)
文章目录零、学习目标一、导入新课二、新课讲解(一)HDFS的Shell介绍(二)了解HDFS常用Shell命令1、三种shell命令方式2、FileSystemShell文档3、常用HDFS的shell命令(三)HDFS常用命令操作实战1、创建目录(... 查看详情
shell笔记
shell中sh,exec,source,fork,./的区别1,shshtest.shsh是通过创建子进程(subshell)去执行脚本,父进程无法使用子进程中的变量,而子进程对环境变量的修改也不会影响到父进程。父进程中的局部变量子进程也无法使用,子进程会继承父进... 查看详情
shell工具和脚本:学习笔记
...tps://missing-semester-cn.github.io/。本篇为学习第二节课所做的笔记,主题是Shell工具和脚本,在这节课中,介绍了bash作为脚本语言的一些基础操作,以及几种最常用的shell工具。变量赋值:foo 查看详情
acwinglinux基础课笔记shell语法(代码片段)
目录声明概论注释变量默认变量数组shell语法之expr命令shell语法之read命令shell语法之echo命令shell语法之printf命令shell语法之test命令与判断符号[]shell语法之判断语句shell语法之函数shell语法之exit命令shell语法之文件重定向shell语法之... 查看详情
shell笔记7
变量,为用户提供了一种存储、检索、操作数据的途径。环境变量、位置变量、预定义的特殊变量、用户自定义变量环境变量(1)SHELL环境变量,是一类shell预定义变量,是用于设置系统运行环境的变量,有系统统一命名。部分环... 查看详情
shell笔记1
shell是操作系统的外壳,是用户使用操作系统的命令接口,是一个介于用户和操作系统内核之间的桥梁。shell俗称,壳。是指“提供使用者使用界面”的软件(命令解析器)。作为命令语言,它交互式解释和执行用户输入的命令,或... 查看详情
shell编程笔记2--nfs挂载
@[toc]shell编程笔记2-ns挂载shell编程笔记2–ns挂载NFS简介NFS就是NetworkFileSystem的缩写,它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到... 查看详情
shell编程学习笔记--整数自增
在Shell脚本中,用于while或for循环中经常要涉及到整数自增的情况,下面罗列下可能的方式【方式一】declare-i来声明整数变量[email protected]:~# declare -i x=1 [email protected]:~# x+=1 [email prote 查看详情
shell脚本加密笔记!
你写的shell在生产环境是否加密?反正我是没有,线上环境看就看呗,觉得没啥。其实想想,好像也有几个好处。1、简单加密,防止别人看里面具体内容。2、可以隐蔽脚本中的密码等信息。(比如你的备份脚本,涉及到密码等... 查看详情
[shader]笔记2017.8.8
<1>在surfaceshader中的surf函数中,参数列表(Inputin,inoutSurfaceOutput)参数1是输入,参数2是输出 参数1的结构定义我们可以看见,参数2的结构定义为: structSurfaceOutput{ half3 查看详情
shell笔记6
cut命令:文件剪切cut命令用来从指定文件中选择指定的行,输出到标准输出。cut-c3test.c显示文件的每行的第3个字符cut-b2test.c显示每一行的第2个字符cout-c1-10test.c显示每行第1个到第10个字符 查看详情
基本shell命令使用笔记
linux常用命令:(ls:列出目录内容)-a/-all列出所有文件,包括隐藏文件-l使用长格式显示详细信息,包括rwx (mkdir:建立目录)-p/-parents若要建立目录的上层目录尚未建立,则会一并建立上层目录mkdir-pparent/child (rmdir删除... 查看详情