1.注释:
shell语法使用#
来注释内容:
#!/bin/bash
#这是一段注释
echo "hello world"
shell中没有多行注释,只有单行注释
2.变量类型:
类型一:本地变量
作用域是整个bash进程
语法:name="Mike"
类型二:局部变量
作用域是当前代码段
语法:local name="Sun"
类型三:环境变量
作用域是当前shell进程以及子进程
语法:export name=""Dir
类型四:位置变量
位置变量小样1:
name="xiaoming"
${name}haha
echo "姓名:${name}"
位置变量小样2:
#给脚本文件传递参数
#参数${0}是脚本文件名字,所以要从${1}开始取值
name=${1}
age=${2}
echo "姓名:${name},年龄:${age}"
#执行脚本,参数跟参数之间用空格间隔
./hello.sh John 19
- 类型五:特殊变量
${0}
该位置变量为特殊变量,表示文件名字
$#
表示参数个数,注意:写作${#}
也可以,的同理
$*
表示参数列表:会将所有的参数组成一个字符串
$@
表示参数列表:所有的参数会分开
$$
表示获取当前shell的进程id
$!
表示执行上一个指令的进程id(PID)
${?}
该位置变量表示返回上一个命令执行状态返回值:
0:表示执行成功;
1:表示程序执行的结果;
2:表示程序状态的返回码(0-255);
echo ${0}
echo ${?}
#下面语法错误
name = "haah"
echo ${?}
执行脚步后输出:
0
./hello.sh: line 5: name: command not found
127
3.变量定义:
- 定义变量不适用
符号,使用该符号表示取该变量的值
#定义name变量
name="xiaoming"
#取name值
$name
- 定义变量时,变量名和
=
符号之间不能有空格
#错误写法⚠️
name = "xiaoming"
name ="xiaoming"
name= "xiaoming"
- 变量名首字母必须为字母(a-z,A-Z)或者下划线
age=10
echo $age
4.只读变量:
使用关键字readonly
name="zhima"
readonly name
5.删除掉变量:
使用关键字unset
name="zhima"
unset name