shell 脚本基础与条件判断
#!shell脚本格式决定专业性
#!/bin/bash
#filename:脚本名
#author:作者
#date:时间
#脚本作用
脚本的执行方式 #脚本名为wk.sh
绝对路径 /root/wk.sh #另开一个shell终端执行
相对路径 ./wk.sh
sh解释器 sh wk.sh 与bash一样 bash wk.sh
source 脚本路径( 与. wk.sh)路径相同 #在当前终端执行,在当前终端生效
#除了sh 解释器执行脚本 其他三种执行方式脚本必须有x权限
重定向操作
| 类型 | 设备文件 | 文件描述编号 | 默认设备 |
| 标准输入 | /dev/stdin | 0 | 键盘 |
| 标准输出 | /dev/stdout | 1 | 显示器 |
| 标准错误输出 | /dev/stderr | 2 | 显示器 |
| 类型 | 操作符 | 用途 |
| 重定向输入 | < | 从指定文件读取出书 |
| 重定向输出 | > >> | 将输出结果指定或追加到文件 |
| 标准错误输出 | 2> 2>> | 将错误输出指定或追加到文件 |
| 混合输出 | &> | 输出不论对错 指定到一个文件 |
变量
自定义变量:
wk=heheheheecho $wk
hehehehe
环境变量:由系统维护的变量
env #查看环境变量
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin #用于可执行程序的搜寻路径
位置变量: 通过命令行给脚本传参
$ 对应脚本名 $-8对应8个参数 #shell脚本最多可以直接处理9个参数
预定义变量: bash中内置的变量,不能直接修改
$*和$@ #保存了传递的所有参数
$ #脚本名称
$? #输出状态码
$# #参数个数
$$ #输出脚本的PID
定义变量与输出
定义一个新的变量
格式:变量名=变量值
注意:变量名必须以字母或下划线开头,严格区分大小写(不能以数字开头)
赋值可使用引号
单引号:''不引用变量,视$为普通字符
双引号:""允许通过$调用变量
反撇好:``或$()先取其中的命令,再执行结果
交互式输入输出
交互式输入
read -p "提示信息" 变量名
局部变量与全局变量
export 变量名
exprot 变量名=变量值
在全局生成变量
变量的运算
echo $((x+y))
条件判断
(1)文件判断
-d 判断是否为目录
-e 判断目录或文件是否存在
-f 判断是否为文件
-r -w -x 判断读写执行权限
-L 判断是否为链接文件 #格式
[ -d /root ]
echo $?
0
(2)整数判断
-eq 等于
-ne 不等于
-gt 大于
-lt 小于
-ge 大于等于
-le 小于等于
#格式
[ 1 -eq 1 ]
echo $?
0
(3)字符串判断
[ aaa == aaa ] #字符串内容相同
[ aaa != bbb ] #字符串内容不同
[ -z 字符串 ] #字符串内容为空
(4)逻辑测试
&&而且
||或
条件1 && 条件2 || 条件3 #如果条件1成立则执行条件二,不成立执行条件3 条件1 || 条件2 #如果条件1不成立,执行条件2,不论成不成立都继续往下执行条件3
条件3 条件1 ||{ #如果条件一不成立则执行括号内的条件2和条件3
条件2
条件3
}
if语句
if 条件1;then #如果 条件1成立;那么
echo #输出 1
elif 条件2;then #或者 条件2成立;那么
echo #输出 2
else #否者
echo #输出 3
fi #"if结束语"
case语句
case 变量 in #判断一个变量 从上到下依次匹配 匹配及停止
) #如果变量等于1
echo "hehe" #输出 hehe
;;
) #如果等于2
echo "xixi" #输出 xixi
;;
*) #通配符*匹配所有
echo "zzz" #输出 zzz
esac #"case结束语"
sshe函数
执行脚本
#!/bin/bash
haha(){ #定义一个函数,函数名为haha
echo $1 #函数内的shell语句, 调用函数就会执行函数里的内容
echo $
echo $
echo ${} #2位以上的参数需用大括号括起来让他是一个整体
}
haha 11 #函数可以传参,但是一般不用传参而是直接调用函数名,执行函数里的内容
#执行结果
shell循环语句
for循环
唯一无法实现无限循环的循环语句,因为for循环的取值是有限的
#!/bin/bash
for i in `seq `
do
echo $i
done
#输出结果
特殊for循环,C语言循环不属于正规shell语言 (( ))两个括号b表示启用C语言,i++是C语言里自身+1 在循环内用let i++调用
#!/bin/bash
for ((i=;i<;i++)) #引用C语言 i=0并且i<3,i自身+1
do
echo $i
done
#输出结果
#!/bin/bash #for 无限循环
for ((i=;;i++)) #不设置结束条件,实现无限循环,但结束条件的位置要空出来
do
echo $i
done
while循环
while : #while : 条件一直为真无限循环
do
命令
done
#!/bin/bash
i=
while [ $i -le ]
do
echo $i
let i++
done
#输出结果
shell脚本4个循环控制语句
exit 终止脚本
break 跳出循环,只跳出离它最近的那次循环
continue 终止本次循环进入下次循环
return 针对函数使用,退出函数体
调用函数
调用系统函数
. /etc/init.d/functions
action "服务启动" /bin/true
shell 脚本基础与条件判断的更多相关文章
- shell脚本编程之条件判断
条件测试类型: 整数测试 字符测试 文件测试 条件测试的表达式的三种方法: 1.[ expression ] 命令测试 2.[[ expression ]] 关键字测试 3.test expressi ...
- Linux shell脚本之 if条件判断 (转)
IF条件判断 1.基本语法: if [ command ]; then 符合该条件执行的语句 fi 2.扩展语法: if [ command ];then 符合该条件执行的语句 elif [ comm ...
- shell编程基础(3)条件判断语句
1,带参数的shellscript #this is program build 5.11 to test shell script ############ cxz ####### 5.11 ### ...
- shell脚本基础 数值运算 判断 及if语句
数值运算 整数运算[三种,随便掌握一种即可]expr 数字 运算符 数字 [root@ceshiji ~]# expr 1 + 1(运算符号都是+ - * / 注:*需要\*.%是取余,余数只有0 1 ...
- shell脚本--分支、条件判断
在看选择判断结构之前,请务必先看一下数值比较与文件测试 if....else... #!/bin/bash #文件名:test.sh score=66 # //格式一 if [ $score -lt ...
- shell脚本-基础
shell脚本-基础 编程基础 程序是指令+ 数据 程序编程风格: 过程式:以指令为中心,数据服务于指令 对象式:以数据为中心,指令服务于数据 shell 程序提供了编程能力,解释执行. 计算运行二进 ...
- Linux shell脚本基础学习详细介绍(完整版)一
Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提.1. Lin ...
- Shell脚本基础学习
Shell脚本基础学习 当你在类Unix机器上编程时, 或者参与大型项目如k8s等, 某些框架和软件的安装都是使用shell脚本写的. 学会基本的shell脚本使用, 让你走上人生巅峰, 才怪. 学会 ...
- SHELL学习笔记----IF条件判断,判断条件
SHELL学习笔记----IF条件判断,判断条件 前言: 无论什么编程语言都离不开条件判断.SHELL也不例外. if list then do something here ...
随机推荐
- 14.SpringMVC核心技术-类型转换器
类型转换器 在前面的程序中,表单提交的无论是 int 还是 double 类型的请求参数,用于处理该请求 的处理器方法的形参, 均可直接接收到相应类型的相应数据,而非接收到 String 再手工转换. ...
- vue-cli3项目中使用CDN
1.html 中引入 echarts html中添加script标签如下: <script src="//cdn.bootcss.com/echarts ...
- Collection 和 Collections 有什么区别?(未完成)
Collection 和 Collections 有什么区别?(未完成)
- 牛客小白月赛19 E 「火」烈火燎原 (思维,树)
牛客小白月赛19 E 「火」烈火燎原 (思维,树) 链接:https://ac.nowcoder.com/acm/contest/2272/E来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空 ...
- 洛谷 P2765 魔术球问题 (dinic求最大流,最小边覆盖)
P2765 魔术球问题 题目描述 «问题描述: 假设有n根柱子,现要按下述规则在这n根柱子中依次放入编号为1,2,3,...的球. (1)每次只能在某根柱子的最上面放球. (2)在同一根柱子中,任何2 ...
- linux中部署django项目
通过Nginx部署Django(基于ubuntu) Django的部署可以有很多方式,采用nginx+uwsgi的方式是其中比较常见的一种方式. 在这种方式中,我们的通常做法是,将nginx作为服务器 ...
- Redis之哨兵机制(五)
什么是哨兵机制 Redis的哨兵(sentinel) 系统用于管理多个 Redis 服务器,该系统执行以下三个任务: · 监控(Monitoring): 哨兵(sentinel) 会不断 ...
- CI环境搭建-创建git
添加如下配置: 上图说的需每次启动的即下面这个文件: 默认用户名.密码是admin/admin 创建代码仓库: 选择版本库: 使用方法: 1,创建一个文件夹 选择版本库地址: 也可以通过c ...
- Java中判断两个Long类型是否相等
在项目中将两个long类型的值比较是否相等,结果却遇到了疑问? 下面就陪大家看看一个神奇的现象! 1.1问题?为什么同样的类型,同样的值,却不相等呢? 1.2那么我们就需要探索一下源码了 源码中显示, ...
- SQL Server 基础之《学生表-教师表-课程表-选课表》(一)
数据库表结构及数据 建表 CREATE TABLE Student ( S# INT, Sname ), Sage INT, Ssex ) ) CREATE TABLE Course ( C# INT ...