zoukankan      html  css  js  c++  java
  • 20191310李烨龙第十章读书笔记

    第十章读书笔记

    知识点归纳

    1.sh脚本

    sh脚本是一个包含sh语句的文本文件,命令解释程序sh要执行该语句。在我的理解来看,之前学习了makefile语句,貌似就是sh脚本的高配语句。

    ​ sh是一个解释程序,逐行读取sh脚本文件并执行。

    2.命令行参数

    位置参数

    ​ $n(if n > 9, add {})

    ​ $0是程序名本身,其余是程序的参数。

    内置变量

    ​ $#=命令行参数的数量(1-n)

    ​ $*=所有命令行参数,包括$0

    ​ $S=执行sh的进程PID

    ​ $?=最后一个命令执行的退出状态(if success, set 0)

    ​ 在sh中,特殊字符$表示替换,还有其他许多特殊字符如/、*、>、<等。如果想把他们用作普通字符,可使用或单引号来引用它们。

    ​ 通常,用于引用单个字符,单引号中用于引用长字符串,在双引号中会发生替换。

    3.sh命令

    内置命令

    .file:				读取并执行文件
    
    break[n]:			从最近的第n个嵌套循环中退出。
    
    cd [dirname]:		更换目录。
    
    continue [n]:		重启最近的第n个嵌套循环。
    
    eval [arg…]:		计算一次参数并让sh执行生成的命令。
    
    exec [arg...]:		通过这个sh执行命令, sh将会退出。
    
    exit [n]:			使sh退出,退出状态为n。
    
    export [var ...]:	将变量导出到随后执行的命令。
    
    read [var ...]:		从stdin中读取一行并为变量赋值。
    
    set [arg ...]:		在执行环境中设置变量。
    
    shift:				将位置参数$2 $3重命名为$1 $2
    
    trap [arg] [n]:		接收到信号n后执行参数。
    
    umask [ddd]:		将掩码设置为八进制数ddd的。
    
    wait [pid]:			等待进程pid,如果没有给出pid,则等待所有活动子进程。
    

    Linux命令

    sh可以执行所有的Linux命令。

    echo:	打印参数字符串。
    
    expr:	将参数字符串转换为数字,对数字执行操作,在将数字转换为字符串。
    
    awk:	数据处理程序。
    
    cmp:	比较两个文件。
    
    comm:	选择两个排序文件共有的行。
    
    grep:	匹配一系列文件的模式。
    
    diff:	找出两个文件的差异。
    
    join:	通过使用相同的键来链接记录以比较两个文件。
    
    sed:	流或行编辑命令。
    
    sort:	排序或合并文件。
    
    tail:	打印某个文件最后n行。
    
    tr:		一对一字符翻译。
    
    uniq:	从文件中删除连续重复行。
    

    命令替换

    在sh中,$A会被替换成A值。当sh遇到'cmd'或者(cmd)时,他会先执行cmd,然后用执行的结果字符串替换。

    4.sh控制语句

    sh是一种编程语句,其使用方法与C相似。

    for语句
    	运算符-eq、-ne、-lt、-gt等将参数作为整数进行比较。
    	-e name				
    	-f name			
    	-d name			判断是否为文件夹
    	-r name			判断文件是否可读
    	name -ef name	判断文件是否相同	
    	
    while语句
    
    until-do语句
    
    case语句
    
    continue&break语句
    

    5.I/O重定向

    当进入sh命令时,我们可以指示sh将I/O重定向到除默认stdin、stdout、和sterr以外的文件。

    	>file	stdout转向文件,如果文件不存在,将会创建文件。
    
    ​	>>file	stdout追加到文件。
    
    ​	<file	将文件用作stdin;文件必须存在并具有r权限。
    
    ​	<<word 	从“here”温江中获取输入,直到只包含word的行。
    

    6.sh函数

    由于sh逐行执行命令,所以必须在任何可执行语句之前定义sh脚本中的所有函数。

    7.sh通配符

    *:	拓展到当前目录中的所有文件
    
    ?:	查询某文件名中的字符。
    
    []:	查询文件名中一对[]中的字符。
    

    问题与解决思路


    实践内容

    编程项目:用sh脚本递归复制文件

    项目sh代码如下:

    #! /bin/bash
    read -p "filename
    " file
    checkfile()
    {
        if [ -f $1 ]; then
    	return 0
        elif [ -d $1 ]; then
    	return 1
        else
    	return 3
        fi
    }
    
    checkfile $file
    if [ $? -eq 0 ]; then
        echo $file is a REG file
    elif [ $? -eq 1 ]; then
        echo $file is a DIR file
    else
        echo unknow file type
    fi
    

    项目运行截图如下:

  • 相关阅读:
    JavaScript---动态加载script和style样式
    百度地图API----搜索地址,获取该点的位置坐标并转换成WebMercator
    ArcGIS api for JavaScript 3.27 FindTask查询功能
    Dojo.declare使用方法详解
    ArcGIS Desktop中为图像设置成不显示背景色
    网页导航条定位
    css3+JS实现幻灯片轮播图
    简单json---转树形json
    js中回调函数写法
    pom.xml文件报MavenArchiver错误 org.apache.maven.archiver.MavenArchiver.getManifest(org.apache.maven.project.MavenProject, org.apache.maven.archiver.MavenArchiveConfiguration)
  • 原文地址:https://www.cnblogs.com/sisterben/p/15336017.html
Copyright © 2011-2022 走看看