Shall编程精讲
Posted 啊~小 l i
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shall编程精讲相关的知识,希望对你有一定的参考价值。
shall精讲目录
什么是Shall
**Shall:**是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序.
格式要求
- 脚本以
#!/bin/bash
开头 - 脚本需要有可执行的权限
执行方式
- 脚本的绝对路径或相对路径
- 给予脚本权限(给予a.sh+X权限)
- 执行脚本
- sh+脚本
说明:不用给予权限,直接执行
Shall变量
- Linux Shell中的变量分为,系统变量和用户自定义变量。
- 系统变量:
$HOME
、$PWD
,$SHELL
,$USER
等等比如:echo $HOME
等 - 显示当前Shall中所有变量:set
Shall变量的定义
- 基本语法
- 定义变量:变量=值
- 撤销变量:unset 变量
- 声明静态变量: readonly变量(不能unset)
- 注释的使用
- 单行注释
#
- 多行注释
:<<! I=10!
- 单行注释
- 快速入门
# 定义变量
A=100
echo "A=$A"
# 变量撤销
unset A
readonly B=99
echo "B=$B" # B不能被撤销
定义变量的规则
- 变量可以由字母、数字、下划线组成,但是不能以数字开头
- 等号两边不能有空格
- 变量名一般习惯大写
将命令的返回值赋值给变量
- A=
ls-la
反引号,运行里面的命令,并且把结果返回给变量A - A=$(ls-la) 等价于反引号
环境变量设置
- 基本语法
export 变量名=变量值(将shall变量输出为环境变量)
source 配置文件(让修改后的配置信息立即生效)
echo $变量名(查询环境变量的值)
位置参数变量
介绍
当我们执行一个shell脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量,比如: /myshell.sh 100 200,这个就是一个执行shell的命令行,可以在myshell 脚本中获取到参数信息
基本语法
$n
(功能描述: n为数字, so代表命令本身, SI-S9代表第一到第九个参数,十以上的参数,以上的参数需要用大括号包含,如${103 )
s*
(功能描述:这个变量代表命令行中所有的参数, s*把所有的参数看成一个整体)$@
(功能描述:这个变量也代表命令行中所有的参数,不过 @把每个参数区分对待)$#
(功能描述:这个变量代表命令行中所有参数的个数)
预定义变量
基本介绍
预定义变量:shell设计者事先已经定义好的变量,可以直接在shell脚本中使用## 基本语法
$s
(功能描述:当前进程的进程号(PID) )$!
(功能描述:后台运行的最后一个进程的进程号(PID) )$?
(功能描述:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0(具体是哪个数, 由命令自己来决定) ,则证明上一个命令执行不正确了。)
以后台的方式去运行,例如:以后台的方式运行a.sh----->a.sh &
运算符
基本语法
$((运算式))
或$[运算式]
- expr m+n expr运算间要有空格
- expr *,/% 乘,除,取余
条件判断
- [ condition ] 注意 condition前后都要有空格
非空返回true,可以使用$?验证(0为true,>1为false)
应用[ condition ] && echo OK || echo notok
条件满足,执行后面的语句
常用的判断条件
两个整数的比较
- =字符串比较
- -It小于
- -le小于等于
- -eq等于
- -gt大于
- -ge大于等于
- -ne不等于
按照文件权限进行判断 - -r有读的权限[-r文件]
- -w有写的权限-
- x有执行的权限
按照文件类型进行判断 - -f文件存在并且是一个常规的文件
- -e文件存在
- -d文件存在并是一个目录
案例
if ["ok" = "ok" ]
then
echo "equal"
fi
if判断
- 基本语法
if[ 条件 ];then
程序
fi
或者
if[ 条件 ]
then
程序
elif[ 条件 ]
then
程序
fi
case语句
case $变量名 in
"值1")
如果变量等于值1,执行程序1
;;
"值2")
如果变量等于值2,执行程序2
;;
*)
for循环
语法一
for 变量 in 值1 值2 值3
do
程序
done
语法二
for ((初始值;循环控制条件;变量变化))
do
程序
done
while循环
while[ 条件 ]
do
程序
done
read从控制台输入
格式:read(选项)(参数)
选项
- -p:指定读取值时的提示符
- -t:指定读取值时的等待的时间(秒),如果没有指定的输入时间内输入,就不等待了
read -p "请输入一个数num1=" NUM1
echo "你输入的是num1=$num1"
# 在规定的时间内输入
read -t 10 -p"输入一个参数num2="NUM2
以上是关于Shall编程精讲的主要内容,如果未能解决你的问题,请参考以下文章