【第十二章】shell脚本1

博客介绍了Bash脚本相关内容。包含交互式脚本、利用日期建文件、数值运算等范例;讲解了直接执行和用source执行脚本的方式及区别;还阐述了利用test命令和判断符号[]进行判断的方法,以及使用中括号的注意事项。

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

范例

交互式脚本

在这里插入图片描述
执行:
在这里插入图片描述
这里第一行的#!/bin/bash用途是声明这个文件内使用bash的语法,当程序被执行时就能加载bash的相关环境配置文件。

利用日期建立文件

在这里插入图片描述
在这里插入图片描述
这里filename=${fileuser:-"filename"}如果fileuser没有设置或者设置为空,则filename的名称就是“filename”。

数值运算:简单运算

在这里插入图片描述
在这里插入图片描述
这里也可以用declare -i total=${first}*${second}求total
如果想计算含有小数点的数据,可以加上bc这个命令。
在这里插入图片描述

数值运算:通过bc求PI

在这里插入图片描述
在这里插入图片描述

其中4*a(1)是bc提供的一个计算PI的函数,scale就是要bc计算机个小数点位的意思,scale表示越精确。

脚本执行方式

利用直接执行的方式执行脚本

之前利用sh(或bash)来执行脚本时,脚本都会使用一个新的bash环境执行脚本内的命令。叶菊是说这种执行方式是脚本在子进程的bash内执行的。就像之前讲export一样,重点是当子进程完成后,子进程内的各项变量或操作将会结束,而不会传回到父亲进程。
实验:在这里插入图片描述
执行了showname.sh之后,里面的变量在父进程的bash中不会存在。

利用source执行脚本

利用source执行脚本情况就和上面不一样了
在这里插入图片描述
showname.sh会在父进程中执行,因此各项操作都会在原本的bash内生效。
这也是为什么如果我不注销系统而要让某些写入~/.bashrc的设置生效时,需要用source ~/.bashrc而不是bash ~/.bashrc

判断式

利用test命令

使用test检测系统上面某些文件或相关属性

选项含义
-e该文件名是否存在
-f该文件名是否存在且是文件
-d该文件名是否存在且是目录
-r该文件名是否具有可读属性
-w
-x
test -z 字符串判断是字符串是否为0,若字符串是空,返回true
-aand,两条件同时成立。比如test -r file -a -x file,则file同时有r和x才返回true
-oor,两条件任意一个成立。

应用:写一个脚本分析文件的属性:
在这里插入图片描述
在这里插入图片描述

判断符号[]

除了test还可以用[]来判断数据。比如想知道${HOME}是否为空,可以这样

在这里插入图片描述
这里注意中括号的两端都需要空格,目的是为了避免和通配符和正则表达式出现语法混淆
在这里插入图片描述
这里出现了too many arguments。这是因为${name}没有用双引号括起来,导致上面的判断式变成了这样yzq yyy == "yzq",等式左边有了两个数据,这就造成了错误。
所以应该这样"${name}" == "yzq"
所以要注意以下几点:

  • 中括号[]内的每个组件都要用空格分隔
  • 中括号内的变量最好都用双引号括起来
  • 中括号内的常熟最好都用单引号或双引号括起来

中括号使用方法几乎和test一样,只是中括号比较常用在if判断里面
应用:
在这里插入图片描述
在这里插入图片描述
这里和test一样,也用了-o表示或。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值