-
系统简易结构
-
shell是一个命令行解释器,接收应用程序/用户命令,调用操作系统内核
-
查看解释器
sudo cat /etc/shells
查看环境变量SHELL
echo $SHELL /bin/bash
-
脚本格式
脚本以#!/bin/bash开头(指定解释器)
-
第一个脚本:helloworld
mkdir datas cd datas touch helloworld.sh vim helloworld.sh #!/bin/bash echo "hello world" # 执行脚本 sh helloworld.sh ./helloworld.sh # 需要执行权限 bash helloworld.sh
-
多命令处理
touch batch.sh batch.sh #!/bin/bash touch /home/yxx/shell_datas echo "hello" >> 1.txt #执行脚本 bash batch.sh
-
常用系统变量
$HOME $PWD $SHELL $USER等
-
定义
- 变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写。
- 等号两侧不能有空格
- bash中,变量默认类型都是字符串类型,无法直接进行数值运算
- 变量的值如果有空格,需要使用双引号或单引号括起来
-
全局变量
export 变量
-
特殊变量:$n
-
基本语法
$n,n为数字,$0代表脚本名称,$1-$9代表第一到第九个参数
-
-
特殊变量:$#
-
基本语法
表示变量个数
-
-
特殊变量:$* $@
-
基本语法
$*,这个变量代表命令行中所有的参数,将所有参数看成一个整体
$@,这个变量代表命令行中的所有参数,把每个参数区分对待
-
-
特殊变量:$?
-
基本语法
$?:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0,证明上一个命令执行失败
-
- 基本语法
- $((运算式)) 或$[运算式]
- expr +, -, *, /, %加、减、乘、除、取余 (expr运算符间要有空格)
-
基本语法
[ condition ]condition前后要有空格
-
常用判断条件
-
两个整数之间比较
符号 意义 -lt 小于 less than -le 小于等于 less equal -eq 等于 equal -gt 大于 greater than -ge 大于等于 greater equal -ne 不等于 not equal = 字符串比较 -
按照文件权限进行判断
符号 意义 -r 有读的权限 -w 有写的权限 -x 有执行的权限 execute -
按照文件类型进行判断
符号 意义 -f 文件存在并且是一个常规的文件 file -e 文件存在 existence -d 文件存在并是一个目录 directory
-
-
多条件判断
&&(逻辑与)表示前一条命令执行成功时,才执行后一条命令;||(逻辑或)表示前一条执行失败了,才执行后一条。
-
if判断
- 基本语法
if [ 条件判断式 ];then 程序 fi #或者 if [ 条件判断式 ] then 程序 fi 注意事项: 1. [ 条件判断式 ],中括号和条件判断式之间必须要有空格 2. if后要有空格- 实例
#!/bin/bash if [ $1 = "1" ] then echo "hello 1" elif [ $1 -eq 2 ] then echo "hello 2" fi -
case语句
-
基本语法
case $变量名 in "值1") 如果变量值等于值1,执行程序1 ;; "值2") 如果变量值等于值2,执行程序2 ;; *) defalut执行命令 ;; esac
-
-
for循环
-
基本语法
for ((初始值;循环控制条件;变量变化)) do 程序 done
-
实例
#!/bin/bash s=0 for((i=0;i<=100;i++)) do s=$[$s+$i] done echo $s
-
基本语法
for 变量 in 值1 值2 值3 .. do 程序 done
-
实例
#!/bin/bash for i in $* do echo "output $i" done
-
-
while循环
-
基本语法
while [ 条件判断式 ] do 程序 done
-
实例
#!/bin/bash s=0 i=1 while [ $i -le 100 ] do s=$[$s + $i] i=$[$i + 1] done echo $s
-
-
基本语法
read(选项)(参数) 选项: -p:指定读取值时的提示符 -t:指定读取值时等待的时间(s) 参数: 变量:指定读取值的变量名
-
实例
#!/bin/bash read -t 7 -p "Enter your name in 7s" NAME echo $NAME
-
系统函数
-
basename基本语法
basename[string/ pathname][suffix] # basename命令会删掉所有的前缀包括最后一个('/')字符,然后将字符串显示出来。 -
实例
basename /home/yxx/shell_data
-
dirname 返回文件上一层绝对路径
-
-
自定义函数
-
基本语法
[function]funname[()] { Action; [return int;] } funname -
案例
#!/bin/bash function sum() { s=0; s=$[$1+$2] echo $s } read -p "input your parameter1 :" p1 read -p "input your parameter2 :" p2 sum $p1 $p2
-



