• Linux入门学习20


    Shell
    Shell 脚本中用 # 表示注释,相当于 C 语言的 // 注释。但如果 # 位于第一行开头,并且是 #! 则例外,它表示该脚本使用后面指定的解释器/bin/sh 解释执行。如果把这个脚本文件加上可执行权限然 后执行
    Shell 语法
    数据类型只有字符串
    Shell 变量名通常是以 字母或下划线打头的字母、数字和下划线字符序列,并且大小写字母意义不同
    有两种类型的 Shell 变量:环境变量和临时变量
    环境变量
    环境变量可以从父进程传给子进程,因此 Shell 进程的环境变量可以从当前 Shell 进程传给 fork 出来的子进 程。
    用printenv 命令可以显示当前 Shell 进程的环境变量。
    10.2.2 临时变量
    只存在于当前 Shell 进程,用 set 命令可以显示当前 Shell 进程中定义的所有变量 ( 包括临时变量和环境变量) 和函数。
    环境变量是任何进程都有的概念,而临时变量是 Shell 特有的概念。在 Shell 中,环境变量和临时变量的定义和用法相似。
    文件名代换
    * :匹配 0 个或多个任意字符
    ? :匹配一个任意字符
    [ 若干字符 ] : 匹配方括号中任意一个字符的次出现一次的文件名
    命令代换
    反引号括起来的也是一条命令, Shell 先执行该命令,然后将输出结果立刻代换到当前命令行中。
    算数代换
    使用 $(()) ,用于算术计算, (()) 中的 Shell 变量取值将转换成整数,同样含义的 $[ ] 等价

    转义字符
    C 语言类似, \ Shell 中被用作转义字符,用于去除紧跟其后的单个字符的特殊意义 ( 回车除外 ) ,换句话说,紧跟其后的字符取字面值。
    单引号
    Shell 脚本中的单引号和双引号一样都是字符串的界定符,而不是字符的界定符。单引号用于保持引号内 所有字符的字面值,即使引号内的\ 和回车也不例外,但是字符串中不能出现单引号。如果引号没有配对 就输入回车,Shell 会给出续行提示符,要求用户把引号配上对。
    双引号
    被双引号括住的内容,将被视为单一字串。它防止通配符扩展,但允许变量扩展。单引号不能展开变量。
    脚本语法
    条件测试
    命令 test [ 可以测试一个条件是否成立,如果测试结果为真,则该命令的 Exit Status 0 ,如果测试结 果为假,则命令的Exit Status 1
    分支
    if/then/elif/fi
    C 语言类似,在 Shell 中用 if then elif else fi 这几条命令实现分支控制。这种流程控制语句本质上也是由若干条Shell 命令组成的,例如
    echo "Is it morning? Please answer yes or no. "
    read YES_OR_NO
    if  [ "$YES_OR_NO" = "yes" ]; then
    echo "Good morning!"
    elif  [ "$YES_OR_NO" = "no" ]; then
    echo "Good afternoon!"
    else
    echo "Sorry, $YES_OR_NO not recognized. Enter yes or no."
    return ;
    fi
    case/esac
    case 命令可类比 C 语言的 switch/case 语句, esac 表示 case 语句块的结束。 C 语言的 case 只能匹配整型或字符型常量表达式,而Shell 脚本的 case 可以匹配字符串和 Wildcard , 每个匹配分支可以有若干条命令, 末尾必须以 ;; 结束 ,执行时找到第一个匹配的分支并执行相应的命令,然后直接跳到 esac 之后,不需要 像C 语言一样用 break 跳出
  • 相关阅读:
    【Docker】05.Docker Desktop安装踩坑汇总
    ElementUI的Form表单使用slot-scope=“scope“获取当前表格行数据实现数据回显、修改表单操作
    当Unity实时3D引擎遇上AI虚实交互,Unity要成为元宇宙时代的新引擎
    Revit翻模教程:怎么在体量内绘制圆锥?
    Kubernetes(k8s)资源管理
    MySQL 数据库 JDBC编程
    代码随想录算法训练营第五十一天|309.最佳买卖股票时机含冷冻期、714.买卖股票的最佳时机含手续费
    深入理解 Docker 核心原理:Namespace、Cgroups 和 Rootfs
    【无标题】
    iis特殊字符的轉義問題解決
  • 原文地址:https://blog.csdn.net/Sj740383500/article/details/127655182