30岁学网站建设,wordpress主题出错修改主题,vf建设银行网站,做网站的毕业答辩ppt实例目录
一、Shell运算符
1.1 表达式expr
1.2 运算操作
1.3 操作实例
二、Shell条件判断
2.1 基本语法
2.2 值、权限、类型、多条件判断
三、Shell流程控制
3.1 if 流程语法
3.2 case 流程语法
3.3 for 流程语法
3.4 内部运算符
3.5 while循环流程语法
四、Shell读…目录
一、Shell运算符
1.1 表达式expr
1.2 运算操作
1.3 操作实例
二、Shell条件判断
2.1 基本语法
2.2 值、权限、类型、多条件判断
三、Shell流程控制
3.1 if 流程语法
3.2 case 流程语法
3.3 for 流程语法
3.4 内部运算符
3.5 while循环流程语法
四、Shell读取控制台输入
五、Shell函数
5.1 系统函数
5.2 自定义函数 一、Shell运算符 我们将Shell当成一门编程语言来学习那么就一定需要有运算符 在Shell中还存在 expr 表达式可以用于做运算 在Shell中运算需要使用 $((ab)) 或者 $[ab] 的形式 1.1 表达式expr
命令符 expr是对应基础的加减乘除操作识别但是乘法和除法前面要加反斜杠 ‘\’ ,并且运算符前后需要空格如以下例子 expr 10 5 expr 8 - 8 expr 2 \* 5 expr 6 \/ 3 1.2 运算操作
但是如果有同学说我们想要把这个值赋给一个变量应该怎么写简单直接用$替换即可用法如下 a$(expr 10 5) aexpr 10 9 × a$((55)) a$[58] 其中第二种方法相当于一个字符串了linux并不会识别expr命令
1.3 操作实例
1、计算38*14的值 s$[(38)*14] 2、创建 add.sh 在执行的时候通过传递参数的形式实现加法效果 #!/bin/bash sum$[$1 $2] echo sum$sum 二、Shell条件判断
Shell中也有条件表达式也就是比较两个值是否相等
2.1 基本语法 test 表达式 1 [ 表达式 ] 注意中括号前后需要有空格 具体例子如下 2.2 值、权限、类型、多条件判断
在条件判断中除了相等于不等的判断还有一些其他的判断
两个值比较
表达式 含义 表达式 含义 -eq 等于(equal) -ne 不等于(not equal) -lt 小于(less than) -le 小于等于(less equal) -gt 大于(greater than) -ge 大于等于greater equal
文件权限判断 -r 有读的权限(read) -w 有写的权限(write) -x 有执行的权限(execute) 文件类型判断 -e 文件存在(existence) -f 文件存在并且是一个文件类型(file) -d 文件存在并且是一个目录类型(directory) 多条件判断 与的关系两者都成立 || 或的关系两者有一个成立 温馨提示 表示前一个条命令执行成功之后在执行第二个条件 || 表示前一个条命令执行失败之后再执行第二个条件 由此我们可以衍生出来类似三元运算符的形式 例如加入我们想测试a是否等于b如果等于则输出ab否则输出a!b [ $a -eq $b ] echo $a$b || echo $a!$b 三、Shell流程控制
流程控制语句是程序中的重点知识掌握了流程控制语句程序的基本架构就可以搭建起来了
3.1 if 流程语法
基本语法 if [ 条件判断 ]; then 语句 fi # 或者下面这种 if [ 条件判断 ] then 语句 fi 这只是单一的if我们需要else的语法如下 if [ 条件判断 ] then 语句 else 语句 fi 实例比如说我们输入一个数如果大于18则输出该岁数已经成年反之则输出该岁数还未成年 #!/bin/bash if [ $1 -gt 18 ] then echo 该岁数已经成年 else echo 该岁数还未成年 fi 要是else if那种语法呢语法结构如下: if [ 条件判断 ] then 语句 elif [ 条件判断 ] then 语句 else 语句 fi 实例比如说我们输入一个数小于18则输出未成年大于等于18小于35则输出青年人大于等于35小于60则输出壮年人否则输出老年人 #!/bin/bash if [ $1 -lt 18 ] then echo 未成年 elif [ $1 -lt 35 ] then echo 青年人 elif [ $1 -lt 60 ] then echo 壮年人 else echo 老年人 fi 3.2 case 流程语法
if 如果遇到多个条件写起来会很麻烦可以使用 case 改写语法结构如下 case $变量名 in 值1) 语句 ;; 值2) 语句 ;; #...省略其他分支... *) 语句 ;; esac 注意事项 case行结尾必须为单词in每一个模式匹配必须以右括号)结束 双分号 ;; 表示命令序列结束相当于跳出当前判断语句 最后 *) 表示默认模式结尾不符合最终的出口 例子输入一个数如果输入的是888888则原样输出否则输出为其他数字 #!/bin/bash case $1 in 8) echo $1 ;; 88) echo $1 ;; 888) echo $1 ;; *) echo 其他数字 esac 3.3 for 流程语法
循环语句用于重复执行某个操作
for语句就是循环命令可以指定循环的起点、终点和终止条件
不过for语句有两种不同写法分别如下
基本语法1 for (( 初始值; 循环控制条件; 变量变化)) do 语句 done 例子比如说我们想计算1到100的累和实现如下 #!/bin/bash for(( i0;i100;i )) do sum$[$sum$i]; done echo $sum 基本语法2 for 变量 in 值1 值2 值3... do 语句 done 例子列举出linuxwindowsmacos等操作系统 #!/bin/bash for os in linux windows macos do echo $os done 3.4 内部运算符
在shell中 {} 是内部运算符 {} 表示一个序列例如从1写到100{1..100}
那么再用for的语法2来计算1-100的累和 #!/bin/bash for i in {1..100} do sum$[$sum$i] done echo $sum $* 和 $ $* 和 $ 非常相似都代表命令行所有的参数但是 $* 把参数看成是一个整体例如 123 456 。而 $ 把每个参数区分对待例如换行显示
例如下面这个例子将输入的数用上述两种方式输出体现出他们的区别 #!/bin/bash echo $* for param in $* do echo $param done echo $ for paprm in $ do echo $paprm done 注意在没有循环遍历时候两者效果一致 3.5 while循环流程语法
循环语句除了 for 之外还有一个 while 循环
基本语法 while [ 条件判断 ] do 语句 done 例子比如说我们输入一个数然后输出从1到该数的累和 #!/bin/bash a1 while [ $a -le $1 ] do sum$[$sum$a] a$[$a1] done echo 1到$1’的累和为‘$sum 四、Shell读取控制台输入
读取控制台信息既简单又很实用
基本语法 read 选项 参数 选项 -p指定读取值时候的提示符 -t指定读取值时候的等待时间(秒) 如果不添加 -t 表示一直等待参数 变量指定读取值的变量名
例子如图 假如我们让他只能等待两秒看看是否自动结束 OK确实如此最后你们看到那个t其实是没有的是因为我点击光标出现的提示符并不是我的输入。
五、Shell函数
函数的本质就是一段可以反复调用的代码块 在Shell中函数细分为系统函数和自定义函数
5.1 系统函数 我们可以测试一些系统命令例如使用率非常高的 date 我们还可以获取时间戳 date %s 当我们需要打印写一些系统日志信息文件的时候文件的命名规则通常在最后会添加上时间戳 温馨提示 这里我们使用的系统命令(或者系统函数) date %s 要进行命令替 换也就是添加 $(date %s)
例子比如说我们用一个脚本输入一个参数并以该参数加入时间戳赋予一个变量并将该变量输出显示 #!/bin/bash filename$1_log_$(date %s) echo $filename 其实我们可以把所有的系统命令当成是系统函数来调用
basename 函数 basename 的作用是获取文件名称它会删除所有的前缀包括最后一个/字符然后将字符串显示出来
语法如下 basename [string/pathname][suffix] suffix为后缀如果suffix被指定了basename将会pathname或string中的suffix去掉如下 感觉这个函数其实就是获取文件名 现在我们回忆一下之前讲解的特殊变量 $n ,其中 $0 是获取当前名字但是带有路径我们只希望获取名字所以可以通过 basename 去掉路径甚至去掉后缀 看上图就是可以成功获取到文件名字并且去除指定后缀
dirname函数 dirname 获取文件路径的绝对路径从给定的包含绝对路径的文件名中去除文件名然后返回剩余的路径 从上面这个图我们可以看得出这个函数注意就是将最后一个/及其后面的内容去掉然后返回前面的内容 5.2 自定义函数
除了系统函数之外还有自定义函数接下来我们看一下自定义函数如何实现
基本语法 function 函数名(){ // 函数体 return 返回值 } 温馨提示 必须在调用函数之前先声明函数 函数返回值可以通过 $? 获取但注意 $? 的值范围是0~255 例子实现一个两个数值相加的函数 看上图此时虽然实现了功能但是如果此时用$?的话超于255的数就不正确了因此我们可以用一个变量来存储返回值 #!/bin/bash function add(){ s$[$1 $2] echo $s } read -p 请输入第一个参数 a read -p 请输入第二个参数 b sum$(add $a $b) echo ab $sum 看上图我们可以知道如果用return的话是无法获得返回值的只能用echo。。。。