一,通用shell
linux中的通用shell为bash shell。
二,工作目标
1.批处理文件
2.初始化操作
3.进程自动化管理
4.网络端口自动化管理
三,语法
0.指定解释器
#!/bin/bash
注释
#
1.变量
全局变量
四,语法
全局变量
系统的全局变量全是大写,自己定义的可以是小写但不建议
export VAR=xxx #一般放在.bashrc 文件中 作长久化处理
查找已定义的全局变量
export env
局部变量
var="hello world"
数组
array=(1 2 3 4 5 6) 或者 array[1]=“hello” array[2]="world" #数组开始从1开始
删除变量
unset var
显示所有的变量(全局+局部+函数)
set
变量的有效范围
父进程export的变量可以进入子进程。
2.读变量
1.读通常的变量
$var 或者 ${var}
2.读数组
${array[1]}
3.命令
var = $(date)
3.数值变量
var=$((13/2)) #只能是整数 或者 var=$[1 + 5] #expr命令的简化 #bc命令用于数值计算 包括浮点数
重定向输入和输出
命令结果输入文件
cmd arg > file &2> #输入错误到文件里 &> #不管错误还是命令输出内容到文件里 cmd arg >>file #追加
文件内容充当命令参数
cmd < file
内联输入重定向
cmd << EOF < asdsad管道
cmd1 | cmd2 #cmd1的结果传输到cmd2的参数查找命令退出的状态码
date echo $?$?的一些相关的信息
0 命令成功结束 1 一般性未知错误 2 不合适的shell命令 126 命令不可执行 127 没找到命令 128 无效的退出参数 128+x 与linux信号x相关的严重错误 130 通过Ctrl + C终止的命令 255 正常范围之外的退出状态码 脚本文件执行后产生的状态码是最后一个命令的执行完后的状态码判断
if condition-command then command elif condition-command then command else command fi比较
if [condition] #简化test命令 then数值比较
[ a -eq b ] a==b [ a -ge b ] a>=b [ a -gt b ] a>b [ a -le b ] a<=b [ a -lt b ] a字符串比较
[ str1 = str2 ] [ str1 != str2 ] [ str1 < str2 ] [ str1 > str2 ] [ -n str ] 检查str长度是否非0 [ -z str ] 检查str长度是否为0文件比较
[ -d file ] file是否存在并且为目录 [ -e file ] file是否存在 [ -f file ] file是否存在并是一个文件 [ -r file ] file 是否存在并可读 [ -s file ] file 是否存在并非空 [ -w file ] file 是否存在并可写 [ -x file ] file 是否存在并可执行 [ -O file ] file是否存在并属于当前用户 [ -G file ] file是否存在并默认组与当前用户相同 [ file1 -nt file2 ] file1是否比file2新 [ file1 -ot file2 ] file1是否比file2旧符合条件
[] && [] 与 [] || [] 或case控制流
case value in a | b) commend c) commend d) commend *) commendfor循环
for var in list do commend done #类c for for (( a=1 ; a<10 ; a++ )) do commend donefor 分割符(IFS)
默认的换行符为 空格 制表符 换行符 #如果要修改的话 old_ifs = $IFS #指定换行 ; ” 为切割号 IFS = $'n';“ #$'n'是个特例 正常应该IFS = ; for #for循环处理的位置 ... IFS = $old_ifs #恢复分割号while 循环
while [ ] do commend done until [] do commend done break n #跳出循环 n默认为1 及跳出一层循环 continue #关键词参数
$? $# $0 #脚本名 $1 #第一个参数 $2 #第二个参数 . . . $9 #一共就可以接收9个参数输出命令
echo "hello world" -n 换行用户输入
read var echo var函数
function name{ #如同写了一个名字为name的可执行文件,所以参数传递与单脚本文件一样 commends } return 0 #用来终止函数 并且返回指定状态码 echo #可以用来返回内容



