shell脚本编写学习

1,自动化批量系统初始化程序
2,自动化批量软件部署程序
3,自动化管理应用程序(基本没有语法难度)
4,日志分析处理程序 (PV UV)grep awk
5,自动化备份恢复程序(mysql备份脚本,增量,+crond
6,自动化管理程序(批量远程修改程序,软件升级,配置更新)
7,自动化信息采集及监控程序(收集系统,应用状态信息,cpu
8, shell可以做任何事,主要是看业务需求

逻辑判断,&&

程序语言执行的时候,沙邦,找自己的解释器Python和bash

shell不需要编辑,解释型语言,执行的时候就开始编译

c语言和java语言都需要编译,但是java编译完之后是字节码文件,c语言就是
二级制机器码,java语言只要安装java虚拟机就好了,安装jdk他认识字节码

py也有自己的字节码,也要编译,也有Python的虚拟机
cat /etc/shells
expect 期望
perl

/usr/bin/python <<-EOF
print "hello word"
print "hello word"
print "hello word"
EOF

#!/usr/bin/bash

“点”        .

source bash

常规就是子shell执行 bash test.sh
!number
执行历史命令
!string

nohup 挂起

命令排序
多行命令用分号将其分隔,不关心前一个命令是否成功
./config && make && make install

*任意多个字符
?任意一个字符
[]只匹配其中的一个
\转义字符
\* 回归本意
() 代表子shell
\n 代表换行符

颜色提示
echo -e "\e[1;31m this is a red text "

echo -e "\e[1;31m this is a text\e[0m"


shell变量

上一个命令的返回值 $?
read -p 可接受用户的输入
if [ $? -eq 0 ];


--自定义变量
仅在当前上
如何引用 $+变量名 $+{变量名} 可以解决歧义

--环境变量
环境变量在全局上
export 是设置为全局变量

env 可以查看所有的环境变量,例如 env |grep HOME。过滤
--位置变量
$1 $2 ~ $10对应的进行赋值

--预定义变量
$0 脚本名
$* 所有参数
$@ 所有参数
$# 参数的个数
$$ 当前进程的PID
$! 上一个后台进程的PID
$? 上一个吗,命令的返回值0表示成功

`basename $0` 名字

可以在public.sh 中定义变量,然后在需要用到的脚本中调用即可 ,不用配置环境变量

 

#!/usr/bin/bash

# $#代表参数的个数
判断参数的个数是否为0
if [ $# -eq 0 ];then
#输出路径
    echo "usage: `basename $0` file"
    exit
fi
#判断是否为文件,进入
if [ ! -f $1 ]; then
echo
"error file!" exit fi #全部通过判断,既有参数也是文件,开始循环 for ip in `cat $1` do ping -c1 $ip &>/dev/null if [ $? -eq 0 ]; then echo "$ip is up" else echo "$ip is dowm" fi done

 

posted @ 2021-03-01 17:19  我是深水的猫  阅读(117)  评论(0)    收藏  举报