从上到下,限制越来越严格
一、用户自定义变量(本地变量(
注意点:
变量是计算机内存的单元,其中存放的值可以改变
不能以数字开头
变量默认类型是字符串型
变量用等号连接,等号左右两侧不能有空格
要有空格,得用’’或者””扩起来
环境变量名建议大写,便于区分
- 变量定义:
name=123
- 变量调用:
echo $name
- 变量查看:
set
查看系统中所有变量 - 变量删除:
unset name
- 变量叠加:
aa=123 aa=“$aa”456 aa=${aa}789
后面两种方式都可以
二、环境变量
主要保存的是和系统操作环境相关的数据
用户自定义的变量只在当前的Shell中生效,二环境变量会在当前Shell和这个Shell的所有子Shell当中生效。如果把环境变量写入相应的配置文件,那么这个环境变量就会在所有的Shell中生效。
1、设置环境变量
- 申明变量:
export 变量名=变量值
- 查询变量:
env
- 删除变量:
unset
2、系统常见环境变量
- PATH:系统查找命令的路径
- PATH的变量叠加:
PATH=“$PATH”:/root/sh
,可以把路径加进去,执行命令的时候,系统会在PATH路径里查找所需命令
- PATH的变量叠加:
- PS1:定义系统提示符的变量(花式玩Linux,没有太大必要可以不用改
- 修改的就是命令行前面的
edisonhuang@edisonhuang:~$
- 修改的就是命令行前面的
提示符 | 功能 |
---|---|
\d | 显示日期 |
\h | 显示简写主机名 |
\t | 显示24小时制时间 |
\T | 显示12小时制时间 |
\A | 显示24小时制时间 |
\u | 显示当前用户名 |
\w | 显示当前所在目录的完整名称 |
\W | 显示当前所在目录的最后一个目录 |
# | 执行的第几个命令 |
$ | 提示符。如果是root用户显示#,非root用户显示$ |
三、位置参数变量
- 主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的
位置参数变量 | 作用 |
---|---|
$n | n为数字,$0代表命令本身,$1- {10} |
$* | 这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体 |
$@ | 这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待 |
$# | 这个变量代表命令行中所有参数的个数 |
把命令行中的参数,传入$1 $2…中
四、预定义变量
- Bah中已经定义好的变量,变量名不能自定义,变量作用也是固定的
预定义变量 | 作用 |
---|---|
$? | 最后一次执行的命令的返回状态,如果是0,则上一个命令正确执行,不是0,则不正确 |
$$ | 当前进程的进程号(PID) |
$! | 后台运行的最后一个进程的进程号(PID) |
- read 接受键盘输入
- 命令语法:
read [选项][变量名]
选项 | 功能 |
---|---|
-p ”提示信息“ | 在等待read输入时,输出提示信息 |
-t 秒数 | read命令会一直等待用户输入,使用此选项可以指定等待时间 |
-n 字符数 | read命令只接受指定的字符数,就会执行 |
-s | 隐藏输入的数据,适用于机密信息的输入 |
read -t 30 -p “please input your name: “ name
echo $name
read -s -t 30 -p “please enter your age: “ age //会隐藏输入的内容
echo “\n”
echo $age
read -n 1 -t 30 -p “[M/F]: ” sex //只让你输出一个字符
echo “\n”
echo $sex