1.变量名的命名规则
1.只包含字母、数字和下划线: 变量名可以包含字母(大小写敏感)、数字和下划线 _,不能包含其他特殊字符。
2.不能以数字开头: 变量名不能以数字开头,但可以包含数字。
3.避免使用 Shell 关键字: 不要使用Shell的关键字(例如 if、then、else、fi、for、while 等)作为变量名,以免引起混淆。
4.使用大写字母表示常量: 习惯上,常量的变量名通常使用大写字母,例如 PI=3.14。
5.避免使用特殊符号: 尽量避免在变量名中使用特殊符号,因为它们可能与 Shell 的语法产生冲突。
6.避免使用空格: 变量名中不应该包含空格,因为空格通常用于分隔命令和参数。
2.变量的类型
declare:声明
shell本身不支持小数。(需要借助bc工具)
declare –a name | 数组array |
declare –f name | 方法function |
declare –F name | 同上,但只显示function的名字 |
declare –i name | 整数integer |
declare –r name | 只读,相当于readonly name |
declare –x name | export, 即不仅在当前的环境中起作用,也在外部的shell环境中起作用 |
3.变量的使用
使用变量时加 $ 符号
1.赋值
等号两侧避免使用空格:
# 正确的赋值
t1="变量t1"
# 有可能会导致错误
t1 = "变量t1
2.打印
t1="变量t1"
echo $t1 #打印:变量t1
echo ${t1} #花括号是可选的,加花括号是为了帮助解释器识别变量的边界
3.改变变量
第二次赋值的时候不能 $
my_name="alan" #第一次赋值
echo $my_name #打印:alan
my_name="tom" #第二次赋值
echo $my_name #打印:tom
4.只读变量readonly
t1="I am t1"
readonly t1
t1="temp1" #报错:This variable is read only.
#合起来:
readonly t3="I am t3"
t3="temp3" #报错:This variable is read only.
unset 命令不能删除 只读变量 :
4.特殊变量
变量说明:
$$ ——Shell本身的PID(ProcessID)
$! ——Shell最后运行的后台Process的PID
$? ——最后运行的命令的结束代码(返回值)
$- ——使用Set命令设定的Flag一览
$* ——所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
$@ ——所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
$# ——添加到Shell的参数个数
$0 ——Shell本身的文件名
$1~$n ——系统内置变量:添加到Shell的各参数值。$1是第1参数、$2是第2参数…。
$1 在shell中称为“位置参数”,表示传入的第1个参数(第1个入参)。
用在shell脚本主体中,表示shell脚本的第1个入参。
用在shell脚本函数里,表示函数的第1个入参。
- $0 就是你写的shell脚本本身的名字
- $1 是你给你写的shell脚本传的第一个参数
- $2 是你给你写的shell脚本传的第二个参数
test -z $1 是一个判断表达式,用于判断$1的值是否为空字符串。若为空,则结果为true;否则为false。
#!/bin/bash
echo $0 # 打印脚本文件名
case $1 in #
start) echo $1
;; # 第一个参数是start,打印第一个参数
stop) echo $1
;; # 第一个参数是start,打印第一个参数
*) echo "require start|stop"
;; # 第一个参数既不是start也不是stop
esac
echo $2 # 打印第二个参数
脚本运行:
#一个参数:start
bash text.sh start
#一个参数:stop
bash text.sh stop
#一个参数:aaa
bash text.sh aaa
#两个参数:aaa、bbb
bash text.sh aaa bbb