Shell介绍
- Shell是一个命令解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一部分程序
-
Shell脚本的执行方式
脚本以#!/bin/bash开头
- 示例:编写shell脚本在控制台输出”hello world”
- 没有可执行权限时可以用以下方法强制执行(不推荐)
- sh ./myshare0.sh
- 单行注释:#
-
Shell变量
Shell变量的介绍
Linux Shell中的变量分为系统变量和用户自定义变量
- 系统变量:
- $HOME,$PWD,$SHELL,$USER
- 示例:输出系统变量
- echo “PATH=$PATH”
- echo “user=$USER”
显示当前Shell中的所有变量:set
定义变量:变量=值
- A=100
- 撤销变量:unset 变量
- unset A
- 定义静态变量:readonly 变量=值,静态变量不能unset
- 可以把一个变量提升为环境变量,可供其他Shell程序使用
- 注意事项:
- 定义变量时等号两侧不能有空格
- 变量名称习惯上大写
将命令的返回值赋给变量
基本语法:
- export 变量名=值(将Shell变量输出为环境变量)
- source 配置文件(让修改后的配置信息立即生效)
- echo $变量名(查询环境变量的值)
在/etc/profile文件中定义TOMCAT_HOME环境变量
当我们执行一个shell脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量
基本语法
$n(n为数字,$0表示命令本身,$1-9代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如${10})
- $:代表命令行中所有的参数(不包括命令本身),$把所有的参数看成一个好整体
- $@:代表命令行中所有的参数(不包括命令本身),把每个参数区别对待
- $#:代表命令行中所有参数的个数(不包括命令本身)
- 示例:
预定义变量
- 就是shell设计者事先已经定义好的变量,可以直接在shell脚本中使用
- $$:当前进程的进程号(PID)
- $!:后台运行的最后一个进程的进程号
- $?:最后一次执行的命令的返回状态
- 0:上一个命令正确执行
- 非0:上一个命令执行不正确
- 示例
运算符
- $((运算式))
- $[运算式]
- expr m + n
- 注意expr运算符间要有空格
- *:乘
- /:除
- %:取余
- 示例:计算(2+3)* 4的值
- 1
- RESULT1=$(((2+3)*4))
- echo “result1=$RESULT1”
- 2
- RESULT2=$[(2+3)*4]
- echo “result2=$RESULT2”
- 3
- TEMP=
expr 2 + 3 - RESULT3=
expr $TEMP \* 4 - echo “result3=$RESULT”
- TEMP=
- 1
示例:求命令行两个参数的和
if [ 条件 ]
- then 执行语句
-
两个整数的比较
=:字符串比较
- -lt:小于
- -le:小于等于
- -eq:等于
- -gt:大于
- -ge:大于等与
-
按照文件权限进行判断
-r:是否有读的权限
- -w:是否有写的权限
-
按照文件类型进行判断
-f:文件存在并且是一个常规的文件
- -e:文件存在
- -d:文件存在并是一个目录
示例

流程控制
if
if [ 条件判断语句 ]
then
执行语句
elif [ 条件判断语句 ]
then
执行语句
fi
case

for
while
读取控制台输入
- read 选项 参数
- -p:指定读取值时的提示符
- -t:指定读取值时等待的时间(秒),如果没有在指定的时间内输入,就不再等待了
函数
系统函数
示例
- basename 路径名 后缀名
- 返回完整路径最后/的部分,常用于获取文件名
- 示例:返回/home/aaa/test.txt的”test.txt”部分
- basename /home/aaa/test.txt
- dirname 路径名
- 返回完整路径最后/的前面的部分,常用于返回路径部分
其他知识点
- 用echo输出时使用单引号将要输出内容括起来,那么会将括起来的内容原样输出,不考虑变量等



