Shell 编程
shell脚本格式
1)脚本文件命名规范:shell脚本文件就是一个文本文件,后缀名建议使用.sh结尾,例如test.sh
(2)首行格式规范: 在脚本文件的第一行通常需要添加脚本文件的声明,指定使用哪种Shell解释器执行该脚本。例如,使用 Bash 解释器的声明为:#!/bin/bash。这个声明称为shebang,用于告诉系统应该使用指定的解释器来执行脚本。
(3)注释格式: 注释用于提供对脚本的说明和解释,不会被解释器执行。在Shell脚本中,注释可以以#开头。
Shell变量
变量的定义和赋值用等号相连,例如:
name="Parker"
huo='red'
在shell脚本中,单引号和双引号的区别:
- 单引号中的所有字符都被视为普通字符,不会被解释为变量或特殊字符。
- 双引号中的字符可以被解释为变量或特殊字符。
例如:
name="Parker"
echo "My name is $name"
# 输出:My name is Parker
name="Parker"
echo 'My name is $name'
# 输出:My name is $name
变量的分类
本地变量:
- 全局变量: 全局变量在脚本的任何地方都可以访问和使用。
name="Parker" echo "My name is $name" # 输出:My name is Parker
- 局部变量: 局部变量只能在定义它的函数或代码块中访问和使用,函数执行完毕后,局部变量就会被销毁。
function my_function { local name="Parker" echo "My name is $name" }
环境变量:
环境变量是在操作系统中设置的变量,它们可以在Shell脚本中被访问和使用。环境变量通常用于存储系统配置信息、路径等。
在shell脚本中,可以使用env命令查看当前bash进程中的环境变量。
如图:
可以使用export命令将变量导出为环境变量,例如:
export name="Parker"
特殊环境变量:
- $0:当前脚本的文件名
- $1-$9:传递给脚本或函数的参数,$1是第一个参数,$2是第二个参数,以此类推。
- $#:传递给脚本或函数的参数个数。
- $@:所有传递给脚本或函数的参数,作为一个列表。
- $?:上一个命令的退出状态码。
- $$:当前Shell进程的PID(进程ID)。
删除变量: 可以使用unset命令删除变量,例如:
unset name
命令代换
命令代换用于将命令的输出结果赋值给变量或在脚本中使用。命令代换有两种语法形式:
- 反引号(``):将命令放在反引号中,命令的输出结果会被替换为变量的值。
- $():将命令放在$()中,命令的输出结果会被替换为变量的值。
例如:
name=`whoami` echo "My name is $name" # 输出:My name is Parker
name=$(whoami) echo "My name is $name" # 输出:My name is Parker
条件判断
方括号([])用于条件判断,它可以用于测试变量、文件和表达式的真假。方括号中的表达式需要用空格分隔。 通常用于if语句、while循环和其它需要进行条件判断的地方。
方括号的基本用法