Linux shell脚本编程基础

本文深入探讨Bash脚本的多种执行方法,包括环境变量管理、逻辑运算、条件判断、变量赋值及脚本执行技巧。涵盖从基本结构到高级功能,如短路逻辑、文件通配符应用及bash命令行展开顺序。

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

一、脚本生效

1. 方法一

把脚本路径写入$PATH变量。

2. 方法二

带上路径执行,需要执行权限。

3. 方法三

bash

bash后跟上脚本,该方法脚本不需要执行权限也能运行。

4. 方法四

| bash

读入脚本内容,通过管道符交给bash执行。当前主机远程调用其他主机的脚本。

 

 

二、基本结构

1. 声明shell类型

#!/bin/bash

2. 变量

3. 函数

4. 主程序

 

 

三、变量

在编写脚本时,如果使用了变量,使用完毕后要使用uset删除变量。因为程序运行期间,如果不人为删除变量,变量将不会在内存中释放空间。

把命令赋值给变量,如果使用echo,只会返回命令本身,不会返回命令结果,因为echo只会把变量的赋值当成字符串处理。

1. 局部变量

1.1 特性

(1) 如果把文本内容当作变量赋值,echo $执行时,如果不带上双引号,内容会以一行显示;如果带上双引号,会保留原有文本格式。

(2) 变量1指向赋值1,变量2指向变量1,实际上变量2是指向赋值1。如果此时变量1指向赋值2,变量2仍指向赋值1。

(3) 局部变量不能在父进程和子进程之间传递。

 

2. 环境(全局变量)变量

2.1 特性

(1) 父进程的全局变量可以传给子进程使用,但子进程修改后不能传回给父进程。

(2) 如果命令能识别变量,变量前不需要加上$

 

 

四、逻辑运算

1. 短路与

cmd1 && cmd2; cmd3

如果cmd1为真,cmd2执行;如果cmd1为假,cmd2不执行,cmd3执行。

 

2. 短路或

cmd1 || cmd2; cmd3

如果cmd1为真,cmd2不执行,cmd3执行;如果cmd1为假,cmd2执行。

 

 

五、逻辑判断

变量在中括号时,要加上双引号,避免因变量为空导致语法错误。因为条件判断语句需要前后都有值才能做比较。

1. 括号

1.1 特性

大括号:不开启子shell,如果括号内有exit,会直接退出当前shell;

小括号:会开启子shell,如果括号内有exit,只会退出子shell。

如果在脚本中,要使用大括号,且最后要加上分号。

中括号:如果括号内有正则表达式,需要用两个中括号;如果括号内没有正则表达式,只需要一个中括号。

双中括号可以使用双等号匹配字符通配符。

 

 

六、赋值

read命令可以批量给多个变量赋值,但值需要用空格隔开,也可以用<读取文件中的内容进行赋值,也需要用空格隔开。

 

 

七、执行脚本

使用传统方式执行脚本文件,会先开启子进程,在子进程中执行脚本文件,不影响当前shell;

使用.source执行脚本文件,会直接在父进程中执行脚本文件,影响当前shell。

别名命令不能在脚本中运行。

 

 

八、bash展开命令行顺序

1. 把命令行分成单个命令词

2. 展开别名

3. 展开大括号的声明( {})

4. 展开波浪符声明( ~)

5. 命令替换$() 和 ``)

6. 再次把命令行分成命令词

7. 展开文件通配( *、 ?、 [abc]等等)

8. 准备I/0重导向( <、 >)

9. 运行命令

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值