Shell脚本基础

本文详细介绍了Shell脚本的基础知识,包括如何创建脚本、使用变量(环境变量和用户变量)、命令替换、重定向(输出重定向和输入重定向)以及执行数学运算。通过示例演示了expr命令和bash内置的数学运算功能。此外,还讲解了脚本的退出状态码和exit命令的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(十三) Shell脚本基础

在shell命令行界面可以同时执行多个命令,命令之间用***分号隔开***

创建Shell脚本

在Shell脚本中以“#”开头的行表示注释行,但是第一行例外

	#!/bin/bash

'#'号后面的!告诉Shell是用哪个Shell来运行脚本;

当我们编写号脚本文件是,执行该脚本文件,面临的一个问题:

让Shell找到你的脚本文件

有两种方式:

  1. 将脚本文件所在目录添加到PATH环境目录中
  2. 用绝对路径、相对路径来引用脚本文件

在脚本文件中使用变量

环境变量

在脚本文件中的环境变量前添加$符号来使用环境变量;

但是有时候我们要显示的就是$这个符号,而不是环境变量,比如:向控制台输出花了是$15;

	echo "花了$15"

可能输出的结果就不是我们希望看见的,这时要显示 符 号 , 在 符号,在 前添加反斜杠“\”

用户变量

自己定义的变量,区分大小写;变量名由字母、数字、下划线组成

变量的生命周期:直到脚本结束,这些变量才会被删除;

在脚本中引用变量:也是通过$符号引用

	#!/bin/bash
	day=10
	echo "已经$day天了"

变量赋值:

	day=10

	age=$day

命令替换

所谓命令替换就是:将命令输出信息,赋值给变量;

有两种方法将命令输出赋值给变量:

  1. 反引号字符(`)
  2. $(命令)格式

如:

	test=`date`


	test=$(date)

注意:赋值等号和命令替换符之间没有空格

重定向

重定向可以用于输出,也可以用于输入;

输出重定向 (>)####

比如前面我们说的将命令输出重定向到文件;

如:


		date > test.txt

date命令的输出结果会覆盖原有的test文件内容(如果该文件之前已经存在)

输入重定向(<)

将文件的内容重定向到命令,而非将命令的输出重定向到文件;

格式:

	command < 输入文件

还有一种输入重定向:内联输入重定向(<<)

无须使用文件进行重定向,只需在在命令行中指定输入重定向的数据就可以了;

你必须指定文本标记来划分输入数据的结束与开始;

文本标记:可以是任意字符串,但在数据的开始与结束文本标记必须一致;

如:

执行数学运算 expr命令

格式:

	expr a expr操作符 b 

如:

	expr 5 \* 3

Bash shell还提供了一种更简单的方式来执行数学表达式:将一个数学运算结果赋值给某个变量时,可以用$和[]符号将数学表达式围起来;

如:

	var=$[5-2]

不但适用于shell命令行,也适用用于shell脚本;这种方式就不会担心如前面的*转义问题,因为在[]中能自动识别区分其含义;

bash shell数学运算符只支持整数运算;

解决bash数学运算的整数限制方案:

  1. bc计算器,允许在命令行中输出浮点表达式

bc计算器能够识别:

  1. 数字(整数、浮点数)
  2. 变量(简单变量、数组)
  3. 注释(以#或者C语言中的/* */开始的行)
  4. 表达式
  5. 编程语句
  6. 函数

退出bc计算器:输入quit

浮点数运算精度有scale变量控制,默认scale为0;可以通过为scale变量赋值,改变运算精度;

在脚本中使用bc ,基本语法格式:

变量=$(echo "options ;表达式" |bc)

options:定义变量,如果定义多个用;隔开如:scale=4

如:

	test=$(echo "scale=4;5.0/2" |bc);

退出脚本

前面我们说当执行完脚本文件的最后一条命令,脚本就结束了;其实还有另外一种方法结束脚本:

shell中运行的每条命令都使用***退出状态码***告诉shell它已经运行完毕;退出状态码是0~255的整数值,该值有命令结束时有命令传给shell,在脚本中可以捕获这个值;

Linux提供了一个专门的变量***$?***来保存上一执行命令的退出状态码;如果要查看某条命令的退出状态执行码,必须在其执行完毕立刻查看;

如:

一般,当一个命令正常结束,退出状态码为0;一个命令结束时有错误,退出状态码为一个正数;

exit命令

默认情况下,shell脚本会以脚本中最后一个命令的退出状态码退出;

exit命令允许你在脚本结束时指定一个状态退码;

格式:

	exit 指定的状态退出码(可以引用脚本中的变量)

当指定的状态退出码值大于255时,返回的是该值与256的模;

09)]

exit命令

默认情况下,shell脚本会以脚本中最后一个命令的退出状态码退出;

[外链图片转存中…(img-KQ3Rt83G-1592379425310)]

exit命令允许你在脚本结束时指定一个状态退码;

格式:

	exit 指定的状态退出码(可以引用脚本中的变量)

当指定的状态退出码值大于255时,返回的是该值与256的模;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值