zoukankan      html  css  js  c++  java
  • 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.则证明上一个命令执行不正确了。

  • 相关阅读:
    【leetcode】Binary Search Tree Iterator
    【leetcode】Palindrome Partitioning II
    【leetcode】Best Time to Buy and Sell Stock III
    【leetcode】Best Time to Buy and Sell Stock II
    【leetcode】Longest Consecutive Sequence
    【leetcode】Factorial Trailing Zeroes
    【leetcode】Simplify Path
    【leetcode】Generate Parentheses
    【leetcode】Combination Sum II
    【leetcode】Combination Sum
  • 原文地址:https://www.cnblogs.com/lu0420-0412/p/12045739.html
Copyright © 2011-2022 走看看