博客
关于我
linux shell脚本
阅读量:640 次
发布时间:2019-03-14

本文共 2052 字,大约阅读时间需要 6 分钟。

Shell基础知识

什么是Shell

Shell是 Unix 操作系统的命令解释器,它接收用户输入的命令并将其转化为操作系统内核能够理解的指令。Shell也是一种脚本语言,允许用户通过脚本调用 Linux 命令,实现自动化操作。

Shell的种类

操作系统内核和 Shell 是独立的组件,同一个内核可以使用不同的 Shell。常见的 Shell 有 sh、bash、csh 等。每种 Shell 都有其独特的命令语法和特性。

Shell的环境定义

临时环境变量

临时变量是指用户在当前登录环境中定义的变量,通常是通过命令行定义的。当用户退出系统后,这些变量不会继续生效。

将环境变量永久生效

通过将环境变量定义写入配置文件,可以实现环境变量永久生效。例如:

  • /etc/profile:系统所有用户登录时生效的环境变量文件。
  • ~/.bash_profile:用户自定义的环境变量文件。

系统预定义的环境变量

系统提供的环境变量对所有用户有效,常见的有 $HOME$SHELL$PATH 等。

Shell脚本编程

Shell脚本的结构

一个典型的 Shell 脚本包含以下部分:

  • 首行#!/bin/bash,指定使用 bash 解释脚本。
  • 注释:使用 # 符号注释脚本内容。
  • 内容:包含脚本的命令和命令组合。
  • 脚本的权限

    默认情况下,脚本没有执行权限。需要使用 chmod +x script.sh 赋予执行权限。

    脚本的执行方式

  • 绝对路径或相对路径:如 /root/helloWorld.sh./helloWorld.sh
  • 使用 bash 或 sh:如 bash helloWorld.shsh helloWorld.sh
  • source 或 .:如 source helloWorld.sh./helloWorld.sh
  • Shell变量

    变量分类

    • 用户自定义变量:由用户定义,作用域为当前 Shell 环境。
    • 环境变量:对所有 Shell 和子 Shell 生效。
    • 位置参数变量:用于传递脚本参数,变量名不能自定义。
    • 预定义变量:Bash 中内置的变量,如 $HOME$SHELL$? 等。

    变量设置规则

  • 变量名称由字母、数字和下划线组成,不能以数字开头。
  • 变量类型默认为字符串,需显式声明为数值型。
  • 变量赋值时,等号两侧不能有空格。
  • 变量值中包含空格时,需用单引号或双引号包围。
  • 变量使用示例

    name="张伟"age=30echo $name $age

    删除或静态变量

    • 删除变量:unset NAME
    • 静态变量:readonly B=2,不能被 unset

    环境变量与位置参数

    位置参数变量

    位置参数变量用于传递脚本参数,常见的有:

    • $1$9:表示第 1 到第 9 个参数。
    • $*:表示所有参数,作为整体。
    • $@:表示所有参数,逐个区分。

    shift 命令

    shift 用于将位置参数左移,每次执行后,参数序列顺次左移一个位置。

    测试命令

    测试字符串

    if [ "$name" == "root" ]; then    echo "欢迎 root !"fi

    测试整数

    if [ 100 -ge 100 ]; then    echo "相等"fi

    测试文件

    if [ -d "/etc/rc.d/httpd" ]; then    echo "存在"fi

    流程控制语句

    if/else 命令

    if [ -x "/etc/rc.d/init.d/httpd" ]; then    /etc/rc.d/init.d/httpd restartfi

    case 命令

    case $CMD in    start)        echo "正在"        ;;    Stop)        echo "停止中"        ;;    *)        echo "错误的命令"        ;;esac

    for 循环

    for N in {1..100}; do    echo $Ndone

    while 循环

    while [ $i -le 10 ]; do    echo $i    i=$((i+1))done

    函数

    函数定义

    function hello() {    echo "欢迎!"    return 0}hello

    函数调用

    hello()

    定时器

    crontab 命令

    crontab 通过配置文件定义任务调度信息,常用格式为:

    分钟 小时 天 月 星期 命令* * * * * /path/to/script.sh

    常用示例

    */5 * * * * /bin/echo "每5分钟运行一次"0 18-23 * * * /path/to/dbcheck.sh

    注意事项

  • 时间字段用空格分隔,* 表示所有值。
  • 多个时间值用逗号或连字符分隔。
  • 命令需使用绝对路径。
  • 用户需有执行权限。
  • 通过以上方法,可以实现任务的自动化和定时运行。

    转载地址:http://orblz.baihongyu.com/

    你可能感兴趣的文章
    OpenCV VideoCapture.get()参数详解
    查看>>
    opencv videocapture读取视频cap.isOpened 输出总是false
    查看>>
    opencv waitKey() 函数理解及应用
    查看>>
    OpenCV 中的图像转换
    查看>>
    OpenCV 人脸识别 C++实例代码
    查看>>
    OpenCV 在 Linux 上的 python 与 anaconda 无法正常工作.收到未实现 cv2.imshow() 的错误
    查看>>
    Opencv 完美配置攻略 2014 (Win8.1 + Opencv 2.4.8 + VS 2013)上
    查看>>
    opencv 模板匹配, 已解决模板过大程序不工作的bug
    查看>>
    OpenCV 错误:(-215)size.width>0 &&函数imshow中的size.height>0
    查看>>
    opencv&Python——多种边缘检测
    查看>>
    opencv&python——高通滤波器和低通滤波器
    查看>>
    OpenCV+Python识别车牌和字符分割的实现
    查看>>
    OpenCV-Python接口、cv和cv2的性能比较
    查看>>
    OpenCV/Python/dlib眨眼检测
    查看>>
    opencv1-加载、修改、保存图像
    查看>>
    opencv10-形态学操作
    查看>>
    opencv11-提取水平直线和垂直直线
    查看>>
    opencv12-图像金字塔
    查看>>
    opencv13-基本阈值操作
    查看>>
    opencv14-自定义线性滤波
    查看>>