Shell脚本语法-变量
一、注释
#
表示注释
注意:在Shell脚本中没有多行注释,只有单行注释
例如:脚本代码
#!/bin/bash
# 输出了Hello world
echo "hello world!"
二、变量
2.1 变量定义
#!/bin/bash
# 输出了Hello world
#正确写法
#name="smile2018"
#错误写法
name = "smile2018"
echo "hello world!"
注意事项:1.定义变量时,变量名不需要加$
符号
2.变量名和等号不能有空格,它和一般的语言不一样
3.变量名首字母必须是字母(a-z,A-Z)
4.变量名之间不允许有空格
5.不允许使用标点符号
…其他细节
name = "smile2018"
运行错误
2.2 只读变量-类似于通常讲的常量
关键字:readonly
2.3 删除变量
语法:unset
(将变量干掉)
示例:
2.4 变量类型
2.4.1 类型1:本地变量
作用域整个bash进程可以使用
语法: name="Dream"
2.4.2类型2:局部变量
作用域:当前代码段
语法:local name="Andy"
2.4.3类型3:环境变量
作用域:当前shell进程以及子进程
语法:export name="Dream"
2.4.4类型4:位置变量
脚本代码
name=${0}
age=${1}
sex=${2}
echo "姓名:${name} 年龄:${age} 性别:${sex}"
执行脚本
./hello.sh Jeff 150 男
执行结果:
我们发现执行有错误,赋值错位了,实际上${0}
表示的是脚本文件
修改代码
2.4.5类型5 特殊变量
2.4.5.1 ${0}
文件名称
2.4.5.2 $(?)
表示返回上一个命令,执行状态返回值
0:表示执行成功
1:程序执行结果
2:表示程序状态返回码(0-255)
2.4.5.3 $#
参数个数
2.4.5.4 $*
参数列表
2.4.5.5 $@
参数列表
2.4.5.6 ${*}
和${@}
的区别
${*}
参数列表:会将所有参数组成一个字符串"Andy 200 男"
${@}
参数列表:分开展示Andy
200 男
2.4.5.7 $$
获取当前shell进程ID
2.4.5.8 $!
执行上一个指令的PID
案例测试:
我们故意设置错误代码
127属于系统预留错误信息
GitHub代码示例