• Linux入门与进阶(九)



    1、Shell scripts脚本简介

    将一系列的命令写到文件中,再执行。
    Shell 既是一种脚本编程语言,也是一个连接内核和用户的软件。
    常见的 Shell 有 sh、bash、csh、tcsh、ash,zsh 等。 sh sh 的全称Bourne shell,由 AT&T 公司的 Steve Bourne开发,为了纪念他,就用他的名字命名了。
    sh 是 UNIX 上的标准 shell,很多 UNIX 版本都配有 sh。sh 是第一个流行的 Shell。
    csh sh 之后另一个广为流传的 shell 是由柏克莱大学的 Bill Joy 设计的,这个 shell 的语法有点类似C语言,所以才得名为 C shell ,简称为 csh。Bill Joy 是一个风云人物,他创立了 BSD 操作系统,开发了 vi 编辑器,还是Sun 公司的创始人之一。 BSD 是 UNIX 的一个重要分支,后人在此基础上发展出了很多现代的操作系统,最著名的有 FreeBSD、OpenBSD 和NetBSD,就连 Mac OS X 在很大程度上也基于BSD。 tcsh tcsh 是 csh 的增强版,加入了命令补全功能,提供了更加强大的语法支持。 ash 一个简单的轻量级的 Shell,占用资源少,适合运行于低内存环境,但是与下面讲到的 bash shell 完全兼容。 bash bash shell 是 Linux 的默认 shell,本教程也基于 bash 编写。
    bash 由 GNU 组织开发,保持了对 sh shell 的兼容性,是各种 Linux 发行版默认配置的 shell。 bash 兼容 sh 意味着,针对 sh 编写的 Shell 代码可
    以不加修改地在 bash 中运行。 尽管如此,bash 和 sh 还是有一些不同之
    处: 一方面,bash 扩展了一些命令和参数; 另一方面,bash 并不完全和
    sh 兼容,它们有些行为并不一致,但在大多数企业运维的情况下区别不
    大,特殊场景可以使用 bash 代替 sh。

    2、创建第一个shell 脚本

    2.1、创建文件

    touch 文件
    vim 文件
    cat >>文件 <<结束符号
    >
    >
    >结束符号
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2.2、编码

    #!/bin/bash
    #注释
    命令
    
    • 1
    • 2
    • 3

    2.3、授予执行的权限

     chmod +x 文件名
    
    • 1

    2.4、执行

    ctrl+c:终止当前命令的执行;ctrl+u:撤销当前输入的错误的数据;
    绝对路径/文件名
    ./文件名 (相对路径)
    bash 文件名
    source 文件名

    3、shell脚本练习

    3.1、示例1

    #!/bin/bash
    #author:lang
    #date:2020-9-1
    #$数字 用来接受空格隔开的参数$0:当前操作的文件名 $1:第一个参数
    $2 :第二个参数....
    tar zcvf $1.tar.gz $2 && echo "备份成功"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3.2、示例2

    #!/bin/bash
    #注释
    read -p "请输入你的名字:" yourname
    echo "你的名字是:${yourname}"
    mkdir ${yourname}
    cd ${yourname}
    touch t001
    echo "hello world" >> t001
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    原始文件名和日期来指定新的文件名,打包功能

    3.3、示例3:进行算术运算

    默认参数
    $数字:

    $0:文件名
    $1 .... 参数
    
    • 1
    • 2

    $*:所有参数

    "$1$2$3"
    
    • 1

    $@:所有参数

    "$1" "$2" "$3"
    
    • 1

    $# :参数个数
    $$:shell脚本执行的进程PID
    $?:上一条命令执行后返回的结果

    #!/bin/bash
    echo $1
    echo $2
    echo $*
    echo $@
    echo "参数的个数:$#"
    echo $?
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    3.4、分支

    #!/bin/bash
    if [ $1 -eq $2 ]; then
    echo '相等'
    else
    echo '不等'
    fi
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3.5、循环

    循环示例:

    for var in var1 var2 var3
    do
    测试
    done
    
    • 1
    • 2
    • 3
    • 4

    3.6、示例:累加求和

    #!/bin/bash
    for i in "潘金莲" "高磊" "西门庆";
    do
    echo $i
    done
    sum=0
    for (( i=1;i<=5;i++ ))
    do
    echo $i
    sum=$((sum + i ))
    done
    echo "和:${sum}"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
  • 相关阅读:
    一个开源的安卓相机:OpenCamera
    12657 - Boxes in a Line (UVA)
    【扫盲】YOLOV7训练
    SL9056C 8V~100V 1.5A磁吸灯降压恒流LED驱动芯片
    Atlas2.2.0编译、安装及使用(集成ElasticSearch,导入Hive数据)
    常见项目管理中npm包操作总结
    ESD最常用的3种模型?|深圳比创达EMC
    数据交互工具 -- HUE
    Xcode控制台调试常用命令
    WebPack自动吐出脚本
  • 原文地址:https://blog.csdn.net/z45351/article/details/125993522