1.set
查看系统中所有已经生效的变量
-u 如果设定此项,则调用未声明的变量时会报错(默认无提示)
2.unset
删除变量(不需要加$)
3.pstree
查看进程树(可以用来识别当前shell处于几层子shell)
用户自定义变量只对其所处shell生效,其子shell是不生效的(环境变量是全局变量)
4.设置环境变量
export 变量名=变量值
变量名=变量值
export 变量名
5.查看环境变量
env
6.将新变量加入已经有的环境变量
# 利用变量叠加(临时生效),如要永久生效,则应该写入环境配置文件中
PATH=$PATH:/root/sh
7.$PS1命令提示符设置
1. \d 显示日期 格式为"星期 月 日"
2. \H 显示完整的主机名
3. \t 显示24小时制时间 格式为"HH:MM:SS"
4. \A 显示24小时制时间 格式为"HH:MM"
5. \u 显示当前用户名
6. \w 显示当前所在目录的完整名称
7. \W 显示当前所在目录的最后一个目录
8. \$ 提示符 root为# 普通为$
8.查询环境语系
# LANG:定义系统主语系的变量(当前生效)
# LC_ALL:定义整体语系的变量
# echo $LANG 查看系统当前语系
# echo $LC_ALL 查看下次生效的语系
# locale -a | more 查看系统支持的所有语系
# cat /etc/sysconfig/i18n
# 查询系统默认语系(即下次开机后永久生效的系统语系,平时我们修改的都是此次临时的,文件才永久)
9.位置参数变量
位置参数变量 | 备注 |
---|---|
$n | n为数字,$0代表命令本身,$1-$9代表1-9个参数,10及以上需要用大括号,如${10} |
$* | 代表命令行中所有的参数,$*将其将成一个整体 |
$@ | 代表命令行中所有的参数,$@将每个参数区分对待 |
$# | 代表命令行中所有参数的个数 |
# $*和$@的区别
# $*中所有的参数看成是一个整体,所以for只会循环一次
# $@中所有的参数是独立的,所以有几个参数就会循环几次
for i in "$*"
do
echo "The parameters is:$i"
done
for y in "$@"
do
echo "Parameter:$y"
done
10.预定义变量
预定义变量 | 作用 |
---|---|
$? | 最后一次执行命令的返回状态,成功为0,失败非0 |
$$ | 当前进程的进程号(PID) |
$! | 后台运行的最后一个进程的进程号(PID) |
11.后台运行
# 假设find / -name hello.sh很慢
# 则用find / -name hello.sh &将其放入后台
12.接收键盘输入
read 选项 变量名
选项 | 备注 |
---|---|
-p | 提示信息 |
-t | 秒数,指定等待输入时间 |
-n | 字符数,只接受指定的字符数就马上执行 |
-s | 隐藏输入的数据,适用于机密的情况 |