• shell知识点(一)


    Shell
    1.概述
    Shell是一个命令行解释器,它接收应用程序/用户命令,然后调用操作系统内核
    还是一个功能相当强大的编程语言,易编写.易调试.灵活性强
    2.shell解析器
    查看linux提供的shell解析: cat /etc/shells

    Sh和 bash是常用的 bash包含了其他的功能,进行了重新编写
    查看默认解析器:echo $SHELL (centos默认的解析器是bash)
    3.Shell 脚本入门
    脚本格式
    脚本为 #!/bin/bash 开头 (指定的解析器)
    创建脚本 touch 脚本名.sh
    例如:创建脚本并在脚本中输入helloworld
    Touch helloworld.sh
    Vi helloworld .sh

    #!/bin/bash
    Echo “helloworld”

    Shell脚本入门
    脚本是将需要执行的命令保存到文本中,按照顺序执行,他是解释型的,不需要编译
    1、脚本格式
    2、脚本以#!/bin/bash开头(指定解析器)
    #!/bin/bash
    #添加描述信息
    #Name:谁编写的脚本
    #DESC:脚本的描述,作用是什么
    #PATH:路径(脚本的路径)
    #CREATETIME:创建日期
    #UPATETIME:更新日期
    实例:
    创建一个shell脚本:
    1.删除class21下的test文件夹
    2.在class21新建一个文件夹test2,在test2中创建3个子文件夹dir1,dir2,dir3
    3.在dir2中新建一个文件student.txt
    4.在student.txt中添加一个zhangsan
    5.打印“任务执行完毕,2019-12-14 09:32:00”

    1、编写脚本:
    1.#!/bin/env bash 或者 #!/bin/bash
    2.添加脚本的描述信息(姓名、描述、路径、创建日期、更新日期等)
    3.开始写脚本
    [root@jinghang ~]# mkdir class21
    [root@jinghang ~]# cd class21/
    [root@jinghang class21]# ll
    总用量 0
    [root@jinghang class21]# vim shell.sh

    #!/bin/env bash

    1.删除class21下的test文件夹 # 创建class21/test文件 mkdir -p root/class21/test # 删除

    rm -rf /root/class21/test

    2.新建在class21新建一个文件夹test2,在test2中创建3个子

    文件夹dir1,dir2,dir3
    mkdir -p /root/class21/test2/dir{1…3}

    3.在dir2中新建一个文件student.txt

    进入dir2

    cd /root/class21/test2/dir2

    添加student.txt文件

    touch student.txt

    4.在student.txt中添加一个zhangsan

    echo “张三” >> student.txt

    5.打印“任务执行完毕,2019-12-14 09:32:00"

    echo "任务执行完毕 date "+%Y-%m-%d %H:%M:%S""

    #!/bin/env bash
    rm -rf /root/class21/test
    mkdir -p /root/class21/test2/dir{1…3}
    cd /root/class21/test2/dir2
    touch student.txt
    echo “zhangsan” >> student.txt
    echo "任务执行完毕 date "+%Y-%m-%d %H:%M:%S""

    执行方式:

    (3)脚本的常用执行方式

    第一种:采用bash或sh+脚本的相对路径或绝对路径(不用赋予脚本+x权限)

    sh+脚本的相对路径

    [jinghnag@hadoop101 datas]$ sh helloworld.sh

    Helloworld

    sh+脚本的绝对路径

    [jinghnag@hadoop101 datas]$ sh /home/jinghnag/datas/helloworld.sh

    helloworld

    bash+脚本的相对路径

    [jinghnag@hadoop101 datas]$ bash helloworld.sh

    Helloworld

    bash+脚本的绝对路径

    [jinghnag@hadoop101 datas]$ bash /home/jinghnag/datas/helloworld.sh

    Helloworld

    第二种:采用输入脚本的绝对路径或相对路径执行脚本必须具有可执行权限+x推荐采用这种方式

    (a)首先要赋予helloworld.sh 脚本的+x权限

    [jinghnag@hadoop101 datas]$ chmod +x helloworld.sh

    (b)执行脚本

    相对路径

    [jinghnag@hadoop101 datas]$ ./helloworld.sh

    Helloworld

    绝对路径

    [jinghnag@hadoop101 datas]$ /home/jinghnag/datas/helloworld.sh

    Helloworld

    注意:第一种执行方法,本质是bash解析器帮你执行脚本,所以脚本本身不需要执行权限。第二种执行方法,本质是脚本需要自己执行,所以需要执行权限。

    4 Shell中的变量
    4.1系统变量
    常用的有$HOME $PWD $SHELL $USER 等
    例:
    1查看系统变量的值 Echo $HOME
    2 显示当前Shell中所有变量 set

    4.2 自定义变量
    4.2.1.语法
    定义变量:变量=值 中间不能有空格
    撤销变量:unset 变量
    声明静态变量:readonly 变量 这个变量只能读,不能修改或者撤销
    4.2.2规则
    变量名称可以由字母/数字和下划线组成,但是不能以数字开头,环境变量名建议大写
    等号两侧不能有空格
    在bash中,变量默认类型都是字符串类型,无法直接进行数值运算。
    变量的值如果有空格,需要用双引号或单引号括起来。

    例:
    定义变量A A=5
    查看变量 $A
    重新赋值 A=3
    撤销变量A unset A
    声明静态变量B readonly B=2
    变量无法进行数值计算

    变量的值如果有空格,需要使用双引号或单引号括起来

    4.2.3把变量提升为全局环境变量 可供其他shell程序使用
    Export + 变量名
    4.3 特殊变量
    4.3.1 $n
    n功能:n为数字, n 功能:n为数字,n功能:n为数字,n代表该脚本名称,$1-$9代表第一到第九个参数, 十以上的参数需要用大括号包含
    例:

    4.3.2$#
    $# 功能:获取所有输入参数个数,常用于循环

    4.3.3$* $@
    ∗功能:代表命令行中所有的参数, * 功能:代表命令行中所有的参数,∗功能:代表命令行中所有的参数,*把所有的参数看成一个整体
    @功能:功能一样,但是 @ 功能:功能一样,但是@功能:功能一样,但是@是把每个参数区分对待

    4.3.4 $?
    $? 功能:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个 命令正确执行;如果非0.则证明上一个命令执行不正确了。

  • 相关阅读:
    Python之路_Day6
    正则表达式
    tensorflow 使用 5 mnist 数据集, softmax 函数
    数据分析 大数据之路 六 matplotlib 绘图工具
    tensorflow 使用 4 非线性回归
    tensorflow 使用 3 模型学习
    数据分析 大数据之路 五 pandas 报表
    tensorflow 使用 2 Felch ,Feed
    tensorflow 使用 1 常量,变量
    数据分析 大数据之路 四 numpy 2
  • 原文地址:https://www.cnblogs.com/lu0420-0412/p/12045739.html
Copyright © 2020-2023  润新知