自动化——shell编程
2024-06-02 21:08:54 3 举报
AI智能生成
Shell编程是一种用于自动化任务的脚本语言,广泛应用于Unix、Linux和macOS等操作系统。Shell脚本是一种文本文件,包含一系列命令和指令,用于自动化日常任务,如文件管理、系统维护和部署应用等。Shell编程的核心是使用命令、变量、条件语句和循环结构等元素,通过这些元素,可以创建强大的脚本来自动执行复杂任务。Shell编程具有高度的可移植性和灵活性,使得系统管理和自动化变得更加简单和高效。
作者其他创作
大纲/内容
又叫做bash编程
准备编程环境
配置/etc/vimrc创建。或。bash文件的时候自动添加说明信息
Windows编辑工具subilne
故障案例:Windows下面书写脚本,上传到Linux
windows每个文件每行结束符号\r\n
Linux每个文件每行回车 \n
故障现象:Windows写的文件,上传到Linux里无法运行
原因:Windows,Linux中回车符号不同
解决:
方案1:不上传文件,直接复制内容
方案2:dos2unix命令处理
dos(windows)
(to)转换
unix(linux)
脚本运行方法
sh/bash
Ubuntu或Debian使用bash,不要用sh(指向dash)
子主题
。/source
/etc/profile
留着inclode功能,把指定代码内容写入到当前脚本中
change_passwd。sh passwd。txt (passwd=lidao96)
给执行权限并运行
系统/服务使用
变量
命名规则
使用变量
echo $变量名字
金庸新作
${变量}
环境变量
UID
PATH
LANG
PS1
export命令 /etc/profile
特殊变量
位置
$n
脚本的第n的参数
$0
脚本名字
输出使用帮助的时候,输出脚本名字
$#
脚本参数个数
一般用于做判断
仅适用于脚本传参,使用read无法判断
$*
$@
状态
$?
上一个命令的返回值
0表示正确
非0则表示错误
与if一起对命令进行判断,检查命令执行是否成功
$$
当前脚本/进程的pid
变量扩展(变量子串)
$(#变量)
统计变量长度(字符)
$(变量/查找/替换)
替换
$(变量#)
$(变量%)
帮助 man bash搜索parameter
$(变量:-默认值) 变量未获未定义,则输出默认值
$(变量:=默认值) 变量为或未定义,责输出并修改变量内容为默认值
赋值
oldbiou=666
time=`date +%F`
脚本传参 num=$1 num+$2
交互式创建变量 read
read -p ”信息“ 变量
通过文件创建
运算
awk
-v
bc
expr
判断是否为数字(整数)
使用正则匹配
let
$(())
$[]
判断
条件测试语句(条件表达式)
文件
-f
-d
-h/-L
-x
-s
字符串对比
=
!=
-n
-z
zero 空,如果为空则为真
比较大小
-eq
equal等于
-ne
not equal不等于-
-gt great than大于
-ge
-lt less than小于
-le
逻辑运算
-a
-o
!
正则
[[ ~= 正则 ]]
面试题:[] 与[[]]的区别
正则
比大小-a &&
逻辑
if判断
if[ ] ;then
fi
fi
一种情况()
if [ ] ;then
else
fi
else
fi
两种情况
双分支
if [] ;then
elif [ ] ;then
else
fi
elif [ ] ;then
else
fi
多分支
if 一般是与[]一起使用,也可以加上命令
case语句
case “变量” in
1) 命令 ;;
2) 命令;;
*) 错误提示
esac
1) 命令 ;;
2) 命令;;
*) 错误提示
esac
菜单
服务管理脚本 服务 。sh start|stop|restart|status
软件安装
。。。
函数
创建
名字(){
}
}
function (){
}
}
使用
函数名字
函数中几个特殊富豪的含义(传参)
$n
函数的第n个参数
$0
脚本名字
输出使用帮助的时候,输出脚本名字
$#
函数参数个数
一般用于作判断
$*
$@
脚本中常用检查命令
端口
ss/nestat
telnet
nc
nmap
curl/wget
ping
atop/glances/。。。
循环
for循环
for name in diaoyong
do
命令
done
do
命令
done
for ((i=1;i<=10;i++))
do
命令
done
do
命令
done
while循环
死循环
while读取文件内容
while read line
do
done<wenjian
do
done<wenjian
cat xxxx | while read line
do
done
do
done
技巧
while read多个变量,多个变量与列一一对应
until循环
数组
创建格式
ip_array=(10.0.0.61 10.0.0.71 10.0.0.81)
取出单个内容格式
echo ${数组名字[元素名字/下标]}
批量创建
ip_list=(`cat ip.txt`)
脚本调试方法
-x
精确显示过程
注释法
输出关键变量
0 条评论
下一页