一 变量介绍
什么是变量?
变指的是事物的状态是可以发生变化的
量指的是记录事物的状态
变量本质就是一种事物存取的机制,变量的数据都是存放于内存中的
为何要有变量?
程序运行的本质就是一系列状态的变化
二 变量的使用
2.1 先定义、后引用
name='shell'
echo $name
2.2 删除变量 ‘unset’
name='shell'
unset name
三 变量的三大组成部分
- 变量名:用来访问变量值的
- 赋值符号:将变量值的内存地址绑定给变量名
- 变量值:存储的数据
3.1 变量名的命名规范
- 以字母开头
- 使用中划线或下划线做单词的连接
- 同类型的使用数字区分
- 对于文件名的命名最好在末尾加上扩展名
3.2 变量值的三种来源
(1)直接赋值
ip=192.168.0.1
name='shell'
today1=`date +%F`
today2=$(date +%F)
(2)从位置参数获取变量值
# 企业使用:可以实现脚本的不同功能(服务程序管理脚本-启动功能 关闭功能 重启功能)
server.sh start|stop|restart
$1 -> start
$2 -> stop
$3 -> restart
(3)与用户交互获取值
# 一:read接收用户的输入,即从键盘读入变量值
read 变量名
read -p "提示信息: " 变量名
read -t 5 -p "提示信息: " 变量名 # -t指定秒数
read -n 2 变量名 # -n读取的字符个数
# 二:输出
# 2.1 echo命令
echo -e 'hello shell'
# 2.2 prinf命令
name='shell'
age='18'
print "my name is %s my age is %s\n" $name $age
四 预定变量
$* 所有的参数
$@ 所有的参数
$# 参数的个数
$$ 当前进程的PID
$? 上一个命令的返回值 0表示成功
[root@localhost ~]# cat a.sh
#!/usr/bin/env bash
echo $*
echo $@
echo $#
echo $$
[root@localhost ~]# chmod +x a.sh
[root@localhost ~]# ./a.sh a1 a2 a3 a4 a5
#针对for循环语句:for i in 元素,for循环会按照空格作为分隔符来一个个取元素,所以此时 `$*`与 `$@`并无区别
[root@localhost ~]# cat script.sh
#!/bin/bash
for i in $*
do
echo $i
done
echo "=================="
for i in $@
do
echo $i
done
[root@localhost ~]#
[root@localhost ~]# ./script.sh 命令1 命令2 命令3
命令1
命令2
命令3
==================
命令1
命令2
命令3
[root@localhost ~]# cat script.sh
#!/bin/bash
for i in "$*"
do
echo $i
done
echo "=================="
for i in "$@"
do
echo $i
done
[root@localhost ~]# ./script.sh 命令1 命令2 "命令3 参数"
命令1 命令2 命令3 参数
==================
命令1
命令2
命令3 参数
五 常量
相对于变量,常量就是不可以被改变的量,又称只读变量