如何编写shell脚本

本文介绍了shell脚本的基础知识,包括脚本文件的后缀、执行方式以及vi编辑器的使用。重点讲解了脚本执行的三种方法及其区别,特别是source命令在变量持久化中的作用。此外,还提到了变量定义、算术运算及其相关规则。

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

做实验要写shell脚本,本以为照着PDF指导书敲就完事了,结果敲出来的代码永远运行不了,上网查了才知道shell脚本有那么多规则

一.shell脚本文件一律以 .sh结尾,执行shell脚本test.sh有3个方法:

1 sh test.sh 或bash test.sh(因为bash完全兼容sh)
当脚本文件没有可执行权限,或脚本文件开头没有指定解释器时需要使用的方法。推荐使用这种方法
2 ./test.s或 绝对路径/test.sh,test.sh必须有可执行权限
新建的脚本默认是没有x权限的,用chmod +x test.sh 即可加上x权限
3 source test.sh或 . test.sh(.空格test.sh),文件有无x权限都可用
source或“.”命令的功能是:将脚本中的内容直接加载到当前的shell并执行,即在当前shell中加载并执行脚本的命令及语句。
注意:
而前两种方法执行shell脚本时都是在当前shell(称为父shell)开启一个子shell环境,此shell脚本就在这个子shell环境中执行,脚本中变量的改变与父shell无关,不会带回父shell环境中,,脚本执行完后子shell环境随即关闭。
而source或“.”命令直接在当前的父shell环境中执行,一些变量的信息会保存在当前shell中。

举例说明:

  • 新建一个test.sh脚本,内容为:A=1
  • 然后使其可执行chmod +x test.sh
  • 运行sh test.sh后,echo $A,显示为空,因为A=1并未传回给当前shell
  • 运行./test.sh后,也是一样的效果
  • 运行source test.sh 或者 . test.sh,然后echo $A,则会显示1,说明A=1的变量在当前shell中

二.vi编写test.sh文件

1 #!/bin/bash 为开头第一句,#! 用于指定shell解释器,#用于注释
2 变量
变量名,值,和等号之间不能有空格,如: var=“123”
$var表示引用变量var,当用$嵌套引用多变量时必须用()或{}

变量命名规则:
1)首个字符必须为字母(a-zA-Z)

2)中间不能有空格,可以使用下划线(_)

3)不能使用标点符号

4)不能使用bash里的关键字(可用help命令查看保留关键字)

3 算数运算
bash 支持很多运算符,包括算数运算符、关系运算符、布尔运算符、字符串运算符和文件测试运算符。原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用.如result=`expr 2 + 2`(`符号用~键下的符号而不是单引号)
注意:表达式的操作符和操作数之间一定要有空格

expr的常用运算符:
加法运算:+
减法运算:-
乘法运算:*
除法运算:/
求摸(取余)运算:%

==两个数比较大小==
x -eq y
-eq:               equal 返回true
-ne:           not equal 返回true
-gt:     greater than    x>y返回true
-lt:     less than       x<y返回true
-ge:     greater equal   x>=y返回true
-le:                     x<=y返回true
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值