shell脚本的概念:
1.讲要执行的命令按顺序保存到一个文本文件
2.给文件可执行权限
3.可以结合各种shell控制语句以完成更复杂的操作
linux中包含shell的文件有
[root@localhost ~]# cat /etc/shells
/bin/sh #UNIX最初使用的 shell,已经被bash所替换。
/bin/bash #基准于GNU的框架下发展出的Shell,是 sh 的扩展
/usr/bin/sh
/usr/bin/bash
/bin/tcsh #整合了csh,提供更多的功能
/bin/csh #语法有点类似于c语言的Shell
注意:nologin是一个奇怪的shell 这个shell可以让用户无法登录
shell格式:
使用vim编译创建xxx以.sh为结尾
脚本的第一行声明脚本解释器用#!
第二行可以用”#“来写入注释信息
后面执行代码依次排序
执行脚本shell:
chmod 给这个文件权限 也可以用bash+文件即可运行 #bash可以有无执行权限
用chmod的这个 要用绝对路径或者相对路径来运行 #要有执行权限
以上两种脚本都是在子shell环境中执行脚本
siure或”.“指定脚本文件运行 #可无执行权限
编译型代码语言:c c++ java go都是编译型语言 代码文件需要先进行编译才能执行
解释性语言:shell python 代码是边解释边运行
交互式硬件设备
标准输入:从该设备接收用户输入的数据
标准输出::通过设备向用户输出数据
标准错误:通过该设备报告执行出错信息
重定向操作
变量:
变量名以字母或者下划线开头
代码:变量=变量值
查看变量值:echo ¥变量
read -p (”提示内容“)变量名
赋值时使用引号:
双引号:允许通过¥符号引用其他变量值
单引号 :会把¥看作为一个普通字符,不会引用变量的值
反撇号:命令替换提取命令结构
设置变量的作用范围
格式:1.export 变量名
让自定义的变量在所有shell环境中有效的方法:
1.在/etc/bashre 文件中 定义变量名=变量值
2.在 /etc/profile 文件中定义 export 变量名=变量值 并source /etc/profile 立即生效
整数运算
let a=10 +5
let a++ 相当于 a=$[a+1]
let a-- 相当于 a=$[a-10]
let a+2= 相当于 a=$[a+2]
浮点数运算
echo ‘4.5+2.1’ | bc
awk “BEGIN[PRINT 4.5+2.1]'
环境变量:
env #查看当前shell环境中可用的环境变量
PATH USER PWD HOMS LANG HTSTSIZE 定义在/etc/profile 中针对于所有用户
家目录~/.base_profile
只读变量
readonly 变量名=变量值
位置变量:
./rest.sh one tow three ....... the
$1 $2 $3 $10
当数字超过10的时候输出显示就变成noe1了 所以我们要添加大括号
预定变量:
$0 表示脚本本身
$# 代表脚本后面跟的位置参数的数量
$? 表示时上一条Linux命令执行的返回状态码(0-255) 0表示上一条命令执行正确 非0时则为异常
$* 默认代表篇脚本后跟所有参数 加上双引号后“$*”会把所有参数看作一个整体
$@ 默认代表篇脚本后跟所有参数 加上双引号后“$*”会把所有参数看作一个体
date
%y 表示年
%m 表示月
%d 表示日
date -d “1 day” + “%y%m%d” 表示昨天日期
date +“%y%m01" 表示当月第一天
date -d "1 month" +"%Y%m01" 下个月第一天
date -d "$(date -d "1 month" +"%Y%m01") -1 day" +"%Y%m%d" 当月最后一天