【Shell脚本编程(概念、变量、语句)】

本文介绍了Shell脚本的基本概念,包括它是如何通过bash解释器执行的。详细讲述了Shell脚本的编写步骤,以及如何执行脚本。接着深入讨论了Shell脚本中的变量,包括用户自定义变量、数组、只读变量、位置变量和预定义变量。此外,还提到了环境变量和一些功能性语句,如read和expr命令,以及test语句用于进行各种测试操作。

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

一.shell脚本概述

1.概念

 Shell脚本是利用 shell 的功能所写的一个程序。这个程序是使用纯文本文件(后缀.sh),将一些 shell 的语法与命令(含外部命令)写在里面,搭配正则表达式、管道命令与数据流重定向等功能;

即命令的集合;

2.shell脚本编写步骤

需求分析>>>命令测试(提前在命令行测试命令)>>>>脚本编写>>>测试调优

(1)第一个shell脚本文件

分析:

#!/bin/bash  解释表示使用的bin文件下的bash shell  ,指定要执行脚本的解释器

shell是解释类编程语言,是不用编译的,边解释边执行,所以不会提前发现程序中的错误:

执行方式    

    bash test.sh    

    source  test.sh        

      ./test.sh (文件权限不够可以用chmod)

二.shell脚本变量

1.shell脚本变量(一)

(1)变量介绍

 变量来源于数学,是计算机语言中能储存计算结果或能表示值的抽象概念。  

变量可以通过变量名访问。在指令式语言中,变量通常是可变的

(2)变量的作用

 用来存放系统和用户需要使用的特定参数(值)

 变量名:使用固定的名称,由系统预设或用户定义

 变量值:能够根据用户设置、系统环境的变化而变化

(3)变量的命名要求

(4)变量的分类

(5)用户自定义变量

用户可以在终端上直接定义变量

变量名一般为大写 ,且引用变量值在变量名前加$这个符号

 用户也可以在文件里面定义变量,注意赋值“=”左右不能有空格

 在不想使用该变量之后可以使用unset把变量删除;

可以看到删除COUNT之后,最后一行打印COUNT的值不再起作用

2.Shell脚本变量(二)

(1)用户自定义变量-取值

双引号: 允许通过$符号引用其他变量值

     弱引用,其中的变量引用会被替换为变量值

单引号: 禁止引用其他变量值,$视为普通字符

       强引用,其中的变量引用不会被替换为变量值,而保持源字符串

反撇号: 命令替换,提取命令执行后的输出结果,``和$(…)作用相同

 单引号会识别为字符串原样输出

双引号用来引用变量的值

 B这种用法相当于把输出的结果存在了一个变量里面

(2)用户自定义变量-数组

echo $a:默认显示数组a的第一个元素

echo ${a[0]} :显示数组中第一个元素,以此类推

echo ${a[-1]}: 显示数组中最后一个元素

echo ${a[*]} 和echo ${a[@]} :显示数组中所有元素

echo ${#a[@]} :显示数组中元素的个数

echo ${a[@]:起始元素id:元素个数]} :显示数组中以起始元素为首的指定个数的元素(注意:这里起始元素id不能为负值

unset a[n] 删除数组中的第n个元素

unset a 删除a这个数组

注意: 数组声明元素要用空格隔开

(3)只读变量

 变量值不允许修改(重新赋值)  

无法使用 unset删除

 最快方法重启

 readonly

(4)位置变量和预定义变量

$0    表示脚本文件名

$1,$2,……$9 ${10} 分别表示第一个到第十个命令行参数

$#     包含命令行参数的个数(统计的是传的参数的个数)

$@   包含所有命令行参数:“$1,$2,……$9”

$*     包含所有命令行参数,是一个整体:“$1,$2,……$9”

$?     包含前一个命令的退出状态

$$     包含正在执行进程的ID号

(5)环境变量

常用环境变量

$USER 表示用户名称

$HOME 表示用户的宿主目录

$LANG 表示语言和字符集

$PWD 表示当前所在工作目录

$PATH 表示可执行用户程序的默认路径  

export可以将变量指定为全局变量

三.shell语句

(1)说明性语句

(2)功能性语句

⭕read  从标准输入读入一行, 并赋值给后面的变量,其语法为:    

   read  var      把读入的数据全部赋给var      

  read  var1  var2  var3      把读入行中的第一个单词(word)赋给var1, 第二个单词赋给var2, ……把其余所有的词赋给最后一个变量. 如果执行read语句时标准输入无数据, 则程序在此停留等侯, 直到数据的到来或被终止运行。

 加 -s为隐藏输入时的内容,-p为打印字符串,-t指定输入时间

expr  

加减乘除和变量值之间要打空格,且乘号要用一个转义字符在前面,除号为/

⭕test语句可测试三种对象:          

字符串     整数     文件属性 每种测试对象都有若干测试操作符;

 字符串测试

s1 = s2       测试两个字符串的内容是否完全一样

s1 != s2    测试两个字符串的内容是否有差异

-z s1                  测试s1 字符串的长度是否为0

-n s1                  测试s1 字符串的长度是否不为0

 整数测试

a -eq b     测试a 与b 是否相等

a -ne b        测试a 与b 是否不相等

a -gt b         测试a 是否大于b

a -ge b         测试a 是否大于等于b

a -lt b         测试a 是否小于b

a -le b         测试a 是否小于等于b

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

放牛的守护神_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值