Shell编程规范与变量

发布于:2024-05-22 ⋅ 阅读:(154) ⋅ 点赞:(0)

目录

Linux中有哪些Shell?

Shell脚本的概述

概念

应用场景

作用

Shell脚本的使用

编程语言类型

编写结构

第一行   申明解释器

第二行   编写注释信息

第三行   编写执行语句

示例

执行Shell脚本

1.bash 或 sh shell脚本 (可无执行权限)

2.绝对路径 和 相对路径(shell脚本)(需要执行权限)

3.source 或 . shell脚本(可无执行权限)

重定向符号

引号的作用

数值运算

整数运算

浮点数运算

变量

定义变量

变量的作用范围

环境变量

只读变量

位置变量

预定义变量

查看日期


Linux中有哪些Shell?

可以查看 /etc/shells这个文件,里面就是Linux所包含的Shell

  • sh:UNIX最初使用的 shell,已经被bash所替换。
  • bash:基准于GNU的框架下发展出的Shell,是 sh 的扩展。
  • csh:语法有点类似于c语言的Shell。
  • tcsh:整合了csh,提供更多的功能。
  • nologin:奇怪的shell,这个shell可以让用户无法登录主机。
  • 登录后默认使用的Shell程序,一般为/bin/bash

Shell脚本的概述

概念

  • 将要执行的命令按顺序保存到一个文本文件
  • 给该文件可执行权限
  • 可结合各种Shell控制语句以完成更复杂的操作

应用场景

  • 重复性操作
  • 交互性任务
  • 批量事务处理
  • 服务运行状态监控
  • 定时任务执行

作用

  • 自动化运维
  • 批量化重复操作可以编写脚本结合计划任务自动周期运行
  • 减轻管理员工作量
  • 提高处理文本文件的速度
  • 避免配置出错

Shell脚本的使用

编程语言类型

  • 编译型:C , C++ , JAVA , GO 代码文件需要先编译后,程序才能执行
  • 解释型:SHELL , PYTHON 代码是边解释边运行

编写结构

第一行   申明解释器

#!/bin/bash   或   #!/bin/python

第二行   编写注释信息

要以 # 开头表示注释,被注释的语句在脚本运行时是不会被执行的

第三行   编写执行语句

按照顺序编写要执行的命令语句

示例

执行Shell脚本

1.bash 或 sh shell脚本 (可无执行权限)

在子shell环境中执行脚本

例:

bash jlh.sh                 #执行shell脚本

sh jlh.sh                     #执行shell脚本

2.绝对路径 和 相对路径(shell脚本)(需要执行权限)

在子shell环境中执行脚本

例:

chmod +x jlh.sh                         #添加执行权限

绝对路径(jlh.sh)                     #执行shell脚本

相对路径(jlh.sh)                     #执行shell脚本

3.source 或 . shell脚本(可无执行权限)

会在当前shll脚本环境中执行脚本

例:

source jlh.sh           #执行shell脚本

. jlh.sh                      #执行shell脚本

重定向符号

  • <              重定向输入,从文件读取数据
  • >              重定向输出,将正常输出的数据信息保存到文件,并覆盖原文件内容
  • >>            重定向追加,将正常输出的数据信息追加保存到文件末尾
  • 2>            重定向错误输出,将错误输出的数据信息保存到文件,并覆盖原文件内容
  • 2>>          重定向错误追加,将错误输出的数据信息追加保存到文件末尾
  • &>  >&     混合输出,将正常和错误输出的数据信息都保存到文件,并覆盖原文件内容
  • &>>          混合追加,将正常和错误输出的数据信息都追加保存到文件末尾
  • 命令 > 文件 2>&1  效果等效于混合输出

例:

ls -lh 标准输出 到屏幕  1 --> 屏幕
ls -lh > test.txt  重定向输出 到 test.txt   1 --> test.txt
2>&1    错误输出 重定向到 标准输出   2 --> 1

引号的作用

  • "$XXX"       会把$看作为引用XXX变量值的特殊符号
  • '$XXX'        会把$看作为一个普通字符,不会引用变量的值
  • `...`  $(...)    提取里面的命令执行后的结果

数值运算

整数运算

  • echo $(expr 整数1 运算符 整数2)    $(expr $变量1 运算符 $变量2)            +  -  \*  /  %
  • echo $[整数1 运算符 整数2]            $[变量1 运算符 变量2]                         +  -  *  /  %   
  • echo $((整数1 运算符 整数2))         $((变量1 运算符 变量2))                       +  -  *  /  %   
  • let a=10+5
  • let a++          #相当于   a=$[a+1]
  • let a--            #相当于   a=$[a-1]
  • let a+=2        #相当于   a=$[a+2]

浮点数运算

  • echo '4.5+2.1' | bc            
  • awk 'BEGIN{print 4.5+2.1}'

变量

定义变量

变量名=变量值                              #变量名只能用 _  A-Z a-z 开头

read -p "提示内容"  变量名          #从键盘输入中获取变量值

变量的作用范围

默认情况下自定义的变量只能在当前shell环境中有效

让自定义的变量在所有shell环境中有效的方法:

  • 在 /etc/profile 文件中定义 export 变量名=变量值                                                                source /etc/profile 立即生效 或 重新登录系统自动生效
  • 在 /etc/bashrc 文件中定义 变量名=变量值                                                                          切换 shell 环境自动生效

环境变量

env                                        #查看当前shell环境中所有可用的环境变量

/etc/profile    ~/.base_profile

export PATH  USER  PWD  HOME  LANG  HISTSIZE       

只读变量

  • readonly 变量名=变量值      #只读变量不允许被修改变量值和删除变量

位置变量

  • ./test.sh  one  two  three  four .... ten  
  •       $0   $1   $2   $3     $4        ${10}

预定义变量

  • $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"       #当月最后一天


网站公告

今日签到

点亮在社区的每一天
去签到