• 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 跳出
  • 相关阅读:
    推荐系统介绍
    python科研作图
    飞桨模型部署至docker并使用FastAPI调用(一)-docker安装与vscode连接
    亚马逊云代码AI助手CodeWhisperer使用教程
    一般控制问题
    一条命令能实现前端本地代码和打包仓库的自动化提交?
    Linux起源
    【HTML】三种加载动画
    Java学习笔记3.10.1异常处理 - 异常类型
    Redis Cluster去中心化集群
  • 原文地址:https://blog.csdn.net/Sj740383500/article/details/127655182