😀
主要记录Shell相关的学习笔记和内容

基础命令

查看shell

  • 查看系统中所有的Shell版本:
  • 查看系统当前的Shell版本:

切换Shell版本

  • 直接输入shell路径切换(具体路径可由上面的 cat /etc/shells 查看)
  • 退出当前Shell:exit

查看Bash版本

  • bash --version
  • echo $BASH_VERSION

Shell语法

脚本创建和执行

  • 创建一个Shell脚本只需一个文本文件,首行通常是 #! 加上解释器的路径,例如 #!/bin/bash 表示此脚本使用Bash解释器。
  • 将脚本文件设置为可执行(chmod +x yourscript.sh),然后通过 ./yourscript.sh 来运行。

变量使用

  • 声明:声明变量时不加任何前缀,赋值时等号两边不能有空格。
  • 使用:使用变量时,需要在变量名前加 $ 符号。

条件判断

  • 使用 if, else, elif 来进行条件判断。
💡
条件可以是命令的返回状态或者表达式的比较结果。

循环

for循环
  • for 循环适用于已知迭代次数的情况,或者从一个列表中逐个处理元素。
  • 语法:
  • 示例:打印数字1到5
While循环
  • while 循环适用于需要基于条件来重复执行代码块的场合,循环将一直执行,直到条件变为假(false)。
  • 语法:
  • 示例:不断读取用户的输入,直到输入 "quit" 时退出循环
Until 循环
  • until 循环与 while 循环相似,但它在条件为假(false)时执行,并持续执行直到条件变为真(true)。
  • 语法:
  • 示例:从1开始计数,一直计数到5

函数

  • 函数可以接受参数并可以返回一个状态码。
  • 示例:

数组

  • Bash支持一维数组,不支持多维数组。
  • 数组元素通过索引访问,索引从0开始。
  • 示例:

关联数组

  • Bash 4及以上版本支持关联数组,可以使用字符串作为索引。
  • 示例:
  • 详细使用:

输入输出重定向

文件描述符
  • Shell使用文件描述符来管理输入和输出。
  • 定义:
    • 0:标准输入
    • 1:标准输出
    • 2:标准错误
输出重定向
  • 输出重定向可以将命令的输出发送到一个地方,而不是显示在终端上。
  • 语法:
    • >:将输出重定向到一个文件,如果文件已存在,则覆盖文件。
    • >>:将输出追加到一个文件的末尾,而不是覆盖它。
  • 示例:
输入重定向
  • 输入重定向可以从文件而不是键盘读取输入。
  • 语法:
    • <:将文件的内容作为命令的输入。
  • 示例:
错误重定向
  • 错误重定向可以控制命令的错误输出。
  • 语法:
    • 2>:将错误信息重定向到一个文件,覆盖文件。
    • 2>>:将错误信息追加到一个文件。
  • 示例:
合并输出和错误重定向
  • 将标准输出和错误输出合并,并重定向到同一个文件。
  • 语法:
    • &>:将标准输出和标准错误合并后重定向到一个文件,覆盖文件。
    • &>>:将标准输出和标准错误合并后重定向到一个文件,追加内容。
  • 示例:
临时重定向
  • 为命令的执行过程中临时重定向输出或输入。
  • 示例:
参考

Shell语法简单应用

任务描述

  • 使用Shell脚本制作一个简单的猜数字游戏。
  • 使用到许多知识点,如变量、条件判断、循环、函数以及基本的用户输入处理。

游戏描述

  • 游戏的目标是让用户猜测一个1到100之间的随机数。
  • 程序将反馈用户的猜测是太高、太低还是正确。
  • 如果猜对了,游戏结束并显示猜测次数;
  • 如果猜错了,用户可以继续猜,直到猜对为止。

Shell实现

如何使用这个脚本

  • 将上述代码保存到一个文件中,例如 guessing_game.sh。
  • 通过运行命令 chmod +x guessing_game.sh 使脚本文件变成可执行文件。
  • 在Shell中运行脚本 ./guessing_game.sh 开始游戏。

代码解析

  • 生成随机数:$RANDOM 生成一个随机数,然后使用模运算 (% 100) 使其在1到100之间。
  • 函数定义:定义了一个 greet 函数来显示初始的游戏指示。
  • 主循环:使用 while true 创建无限循环,直到用户正确猜测数字。
  • 读取用户输入:read -p 用于获取用户输入,并提示用户。
  • 输入验证:使用正则表达式检查输入是否为数字。
  • 条件判断:使用 if 和 elif 结构来判断用户猜测的数字与目标数字的关系,并给出相应的提示。
 

常用脚本

参考

参考/资料

Android Dalvik 和 ART选择笔迹添加到加速层的记录