首页 > 编程知识 正文

shell脚本入门,shell怎么读

时间:2023-05-03 11:53:57 阅读:233828 作者:4360

前言

          学习 shell 内容

文章目录 前言一、作用二、变量1. 定义2. 注释3. 取变量中的值4. 只读变量5. 删除变量6. 字符串 三、默认变量四、数组1. 定义2. 取数组中元素的值3. 读取整个数组4. 取数组长度 五、expr

一、作用 shell 是我们通过命令行与操作系统沟通的语言执行 可以在终端命令行中执行将 shell 命令组成一个文件脚本方便复用在终端执行 bash filename 或者将 shell 命令写在一个文件夹中 ./filename 文件要具有可执行的权限执行的时候路径可以绝对路径也可以是相对路径 二、变量 1. 定义

shell 中的变量本质上都是字符串

name1yjx # 单引号定义字符串name2yjx # 双引号定义字符串name3yjx # 也可以不加引号同样表示字符串 2. 注释

注释用 #

3. 取变量中的值

需要加上$符号或者${}符号。花括号是可选的主要为了帮助解释器识别变量边界。

nameyjxecho $nameecho ${name} 4. 只读变量

readonly 或者 declare 修饰可以将变量变为只读。

5. 删除变量

使用 unset 删除一个变量之后这个变量就不存在了值为空字符串

nameyjxunset name 6. 字符串

定义字符串可以用单引号也可以用双引号也可以不用引号。单引号中的内容不好能转义( )不能读取变量不能执行双引号中的内容可以转义( )可以读取变量可以执行。

获取字符串长度

nameyjxecho ${#name} # 输出3 提取子串 namehello, yxcecho ${name:0:5} # 提取从0开始的5个字符 三、默认变量

设置好的特殊变量可以拿来直接用

$0执行的文件名包含路径$1命令行后的第一参数$2命令行后的第二参数

$#取长度参数$*以字符串的形式返回所有的参数由所有参数构成的用空格隔开的字符串如上例中值为 $1 $2 $3 $4$ 每个参数分别用双引号括起来的字符串如上例中值为 $1 $2 $3 $4

$? 上一条命令的退出状态exit code。一个进程 return 0 表示正常退出其他值表示错误其中 0 和 其他值就是退出状态即 exit code

命令的标准输出 stdout

四、数组

类似于 js 中数组的用法数组中可以存放多个不同类型的值只支持一维数组初始化时不需要指明数组大小数组下标从 0 开始下标可跳。

1. 定义 # 方式 1array(1 abc def yjx) # 每个数组元素用空格隔开array[0]1array[1]abc ... # 方式 2直接定义数组中某个元素的值array[0]1array[1]abcarray[2]defarray[3]yjx 2. 取数组中元素的值

注意$()是获取 stdout 的值${}是获取变量的值

${array[index]} array(1 abc def yjx)echo ${array[0]}echo ${array[1]}echo ${array[2]}echo ${array[3]} 3. 读取整个数组

和 *取所有

${#array[]} # 第一种写法${#array[*]} # 第二种写法 4. 取数组长度

$# 取长度长度不是按下标来算而是按照实际用到的下标数量来算

array(1 abc def yjx)echo ${#array[]} # 第一种写法echo ${#array[*]} # 第二种写法

五、expr

作用用于作运算bash中不可直接作运算作运算时需要借助 expr 命令。expr 将运算的结果返回到 stdout 中取值时需要用 $() 或者

格式expr 表达式表达式的说明如下

表达式说明

用空格隔开每一项一个命令后面的所有参数都需要用空格隔开对包含空格和其他特殊字符的变量要用引号括起来避免报错expr会在stdout中输出结果。如果为逻辑关系表达式则结果为真stdout为1否则为0。expr的exit code如果为逻辑关系表达式则结果为真exit code为0否则为1。

表达式为字符串表达式

表达式为整数表达式

支持 - * / ()其中 * 和 () 需要用 进行转义优先级字符串表达式 > 这整数表达式 > 逻辑表达式

表达式为逻辑表达式

| 和 &等价于 C 中的 || 和 &&使用时需要转义

a | b 如果 a 是非空或非0时返回 a 的值b 不计算。如果 a 是 0 或 空字符串b 不为 0 或空则返回 b 的值b 也同时为 0 或空则返回 0 a & b 如果 a 是 0 或者空时返回 0 或 空b 不计算如果 a 不是 0 或非空时b 为 0 或空时返回 0b 不为 0 或空则返回 a 的值

< < ! > >

比较两端的参数如果为true则返回1否则返回0需要转义可以用 和

() 可以该表优先级但需要用反斜杠转义

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。