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

浙公网安备 33010602011771号