《信息安全系统与设计》第三周学习笔记

sh脚本

  • sh脚本是一个包含sh语句的文本文件,命令解释程序sh要执行该语句
  • sh脚本的第一行通常以#!组合开始,通常称为shebang

实践

  • 创建文本文件my.sh
  • 编辑
  • 运行

sh脚本与c程序

  • sh是一个解释程序,逐行读取sh脚本文件并直接执行这些行
  • c程序必须先编译链接到一个二进制可执行文件,然后通过sh的子程序运行二进制可执行文件

命令行参数

实践


sh变量

  • sh内置变量:PATH、HOME、TERM
  • 除了内置变量外,用户还可使用任何符号作为sh变量(不需要声明)
  • 所有的sh变量值都是字符串
  • 未赋值的sh变量是NULL字符串

实践


sh中的引号

  • sh中有许多特殊字符,如$、/、*、>、<等,要想把它们用作普通字符,可使用\或单引号来引用它们
  • \用于引用单个字符
  • 单引号用于引用长字符串
  • 单引号内没有替换
  • 双引号用于保留双引号字符串中的空格,但在双引号内会发生替换

sh语句

  • sd语句包含所有Unix/Linux语句,以及可能的I/O重定向

sh命令

内置命令

  • sh有许多内置命令,这些命令由sh执行,不需要创建一个新进程

Linux命令

  • echo命令:将参数字符串作为行回显到stdout(通常将相邻的多个空格压缩为一个空格,除非有引号)
  • expr命令:可通过expr命令间接更改sh变量的值(数值)
    • expr string1 OP string2

管道命令

  • 在sh脚本中经常使用管道作为过滤器

实用命令

命令替换

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

sh控制语句

if-else-fi语句

  • if [condition]
    then
    statements
    else
    statements
    fi

for语句

  • for VARIABLE in string1 string2 .... stringn
    do
    commands
    done
实践


while语句

  • while [condition]
    do
    commands
    done
  • 当条件为真时,sh将重复执行do-done关键字中的命令

until-do语句

  • until [ $ANS = "give up"]
    do
    echo -n "Enter your answer : "
    read ANS
    done

case语句

  • case ¥variable in
    pattern1) commands;;
    pattern2) command;;
    patternN) command;;
    esac

continue和break语句

  • 与在C语言一样,continue重启最近循环的下一个迭代,break退出最近循环

sh函数

  • sh函数的定义为:
    func()
    {
    #function code
    }

sh中的通识符

  • 星号通识符:sh中最有用的通配符是*,可扩展到当前目录中的所有文件
  • ?通配符:查询某文件中的字符
  • []通配符:查询文件名中一对[]中的字符

命令分组

  • 在sh脚本中,可以用{}或()命令进行分组

eval语句

  • eval [arg1 arg1 .. argn]
  • eval是一个sh的内置命令
  • 它将输入参数字符串连接到一个字符串中,计算一次,即执行变量和命令替换,然后给出结果字符串供sh执行

苏格拉底挑战





posted @ 2023-09-24 16:34  20211328-张树杰  阅读(50)  评论(0)    收藏  举报