[TOC]
用户自定义变量
- 在bash中,变量的默认类型都是字符串型,如果要进行数值运算,则必须指定变量类型为数值型。
- 变量用等号连接值,等号左右两侧不能有空格。
- 变量的值如果有空格,需要使用单引号或者双引号包括。
- 在变量的值中,可以使用\转义符。
set
命令可以查看系统当中所有的变量。unset 变量名
命令可以删除变量。
环境变量
-
这种变量中主要保存的是和操作系统环境相关的数据。
-
环境变量名建议大写,便于区分。
-
用户自定义变量只在当前shell中生效,而环境变量会在当前shell和这个shell的所有子shell当中生效。如果把环境变量写入相应的配置文件,那么这个环境变量就会在所有的shell中生效。
-
申明环境变量:
export 变量名=变量值
-
查询环境变量
env
-
删除变量
unset 变量名
-
子shell是指在当前shell中输入
bash
命令再打开一个shell,就进入子shell了,输入exit
退出。 -
可以使用
pstree
命令查看我们在哪个shell中。 -
系统常见环境变量
-
PATH:系统查找命令的路径
echo $PATH
结果中可以看到路径和路径之间用冒号分隔。
-
PATH变量追加
PATH="$PATH":/root/sh
-
位置参数变量
-
这种变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的。
-
位置参数变量 作用 $n n为数字,$0代表命令本身,$1~$9代表第一到第九个参数,十以上的参数需要用大括号包含,如${10} $* 这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体 $@ 这个变量也是代表命令行中所有的参数,不过$@把每个参数区分对待 $# 这个变量代表命令行中所有参数的个数 -
$*和$@的区别
#!/bin/bash for i in "$*" # $*中的所有参数看成一个整体,for循环只会循环一次 for y in "$@" # $@中的每个参数都是独立的,所以"$@"中有几个参数就会循环几次
预定义变量
-
是bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的。
-
位置参数变量也是预定义变量。
-
预定义变量 作用 $? 最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0(具体是哪个数,由命令自己决定),则证明上一个命令执行不正确。 $$ 当前进程的进程号(PID) $! 后台运行的最后一个进程的进程号(PID) -
接收键盘输入
read [选项] [变量名]
选项:
- -p “提示信息”:在等待read输入时,输出提示信息
- -t 秒数:read命令会一直等待用户输入,使用此选项可以指定等待时间
- -n 字符数:read命令只接受的字符数,然后不用回车就可以继续执行
- -s:隐藏输入的数据,适用于机密信息的输入
举个栗子:
#!/bin/bash read -t 30 -p "please input your name:" name echo $name