Linux中的shell脚本
shell脚本
shell的概念:
是提供用户与内核的一种交互,是解释器。
脚本的运行方式:
- 直接给权限,直接运行脚本
chmod a+x test.sh 开启一个子进程,在子的进程中执行,子进程不能传递变量到父进程中 - 没有权限,通过bash运行脚本
bash test.sh
#!/bin/bash 不需要 - 没有权限,通过source运行脚本
. test.sh 是在当前shell环境中执行,变量是可以获得的
shell的命令:
- linux命令 /bin/sbin
- 内置命令 将一些常用的命令的构造与shell 内部
- 实用程序 /usr/bin usr/sbin /usr/local/bin
- 用户程序 (可执行的程序)和shell脚本
shell的主要版本:
- bash 大多数的Linux 默认的shell
- ash 是Linux系统占用资源最少的shell,只有24个命令,不常用,不方便
- sh 是UNIX的标准shell
- ksh 是UNIX的标准
- csh 是面向C语言的脚本shell
通配符:
• * 匹配任何字符和任何数目的字符
• ? 匹配单一数目的任何字符
• [] 匹配[]之内的任意字符
• [!] 匹配[]之外的任意字符,!表示非的意思
第一个脚本程序:
#! /bin/bash
echo "hello world"
. test.sh
变量:
定义变量:
var=“value” 定义
${var} 取值, {}定义一个边界,区分
$var
for str in "sgfdsgdafdsa"
do
echo"I am ${str}script"
done
只读变量:
#! /bin/bash
var=“2222”
readonly var #只读变量
删除变量:
unset var # unset 变量的名字
变量类型:
局部变量
全局变量
环境变量
定义在shell 中的变量成为shell 的局部变量
export var 定义全局的变量,在父进程中可也使用
shell 中的特殊变量:
$0 当前脚本的文件名
$1…n 给脚本的参数,1是第一个参数,第二个$2
$# 参数的个数
$? 命令的退出状态
$$ 当前shell的进程ID
命令行参数:
内容:#! /bin/bash
echo “file name $0”
echo “first Parameter $1”
echo “second Parameter $2”
运行:. test.sh ww ee
转义字符:
\ 反斜杠
\a 报警
\b 删除键
\f 换页
\n 换行
\r 回车
\t tab键
注意:echo的命令中-E 选项禁止转义
关系运算符:(只支持数字,不支持字符串,除非字符串本身就是数字)
-eq 相等
-ne 不相等
-gt 大于
-lt 小于
-ge 大于等于
-le 小于等于
逻辑运算符:
! 非运算
-o 或运算
-a 与运算
a=20
b=10
[ $a lt 20 -a $b -gt 100 ] 返回false
[ $a lt 20 -o $b -gt 100 ] 返回ture
字符串运算符:
s1=www
s2=eee
= [ $s1 = $s2 ] 返回false
!= [ $s1 != $s2 ] 返回true
-z 检查字符串长度是否为0,0返回true [ -z $s1 ] false
-n 检查字符串长度是否为0,不为0 返回true [ -n $s1 ] true
其他检测逻辑运算:
shell 的逻辑判断[]等于test命令
-b 检查文件是否是块的的设备文件 [ -b $file ]
-d 检查是否是目录
-f 检查是否是文件
-r 文件是否可读
-w 文件是否可写
-x 文件是否可执行
-e 文件是否存在
-s 文件是否为空
shell的字符串:
“ ”双引号------中间可以带入变量
‘ ’单引号------是原样输出 执行命令==(),表示命令的执行
上一篇: Shell基础整理一
下一篇: MySQL8用户管理