本文共 1809 字,大约阅读时间需要 6 分钟。
在计算机执行任务,有一些数据需要临时放在内存中(若放在硬盘中则需要额外的IO时间),以方便直接读出,这些数据可以改变,称为变量。
而这些数据都会在内存中的某个区域中,有其专属的内存空间地址,并与变量名绑定在一起
赋值(分别为字符型 整型 浮点型赋值).赋值时不能有空格
name='ycy'age=22heigth=1.68
输出
echo $name
取消变量(如果变量在文件中 下次使用依然存在)
unset name #没有$符号
有类型变量 declare
-i 将变量看成整数
-r 使变量只读 readonly,该变量的值无法改变,并且不能为unset -x 标记变量通过环境导出 export -a 指定为索引数组(普通数组);查看普通数组 -A 指定为关联数组;查看关联数组在当前脚本或当前终端,执行完失效
在用户家目录下的.bashrc或.bash_profile文件中,用户私有变量,只能本用户使用。
查看当前用户的环境变量 env
查询当前用户的所有变量(临时变量与环境变量) set
使用export命令将本地变量输出为当前shell中的环境变量
所有用户及shell都可以使用,可以在/etc/profile /etc/bashrc下永久定义系统变量(内置bash中变量) : shell本身已经固定好了它的名字和作用.
$?:上一条命令执行后返回的状态,当返回状态值为0时表示执行正常,非0值表示执行异常或出错 若退出状态值为0,表示命令运行成功 若退出状态值为127,表示command not found 若退出状态值为126,表示找到了该命令但无法执行(权限不够) 若退出状态值为1&2,表示没有那个文件或目录 $$:当前所在进程的进程号 echo $$ eg:kill -9 `echo $$` = exit 退出当前会话$!:后台运行的最后一个进程号 (当前终端) # gedit &!$ 调用最后一条命令历史中的参数!! 调用最后一条命令历史$#:脚本后面接的参数的个数$*:脚本后面所有参数,参数当成一个整体输出,每一个变量参数之间以空格隔开$@: 脚本后面所有参数,参数是独立的,也是全部输出$0:当前执行的进程/程序名 echo $0 $1~$9 位置参数变量${10}~${n} 扩展位置参数变量 第10个位置变量必须用{}大括号括起来./1.sh a b c[root@zutuanxue shell01]# cat 2.sh #!/bin/bash#xxxxecho "\$0 = $0"echo "\$# = $#"echo "\$* = $*"echo "\$@ = $@"echo "\$1 = $1" echo "\$2 = $2" echo "\$3 = $3" echo "\$11 = ${11}" echo "\$12 = ${12}" 了解$*和$@的区别:$* :表示将变量看成一个整体$@ :表示变量是独立的#!/bin/bashfor i in "$@"doecho $idoneecho "======我是分割线======="for i in "$*"doecho $idone[root@zutuanxue shell01]# bash 3.sh a b cabc======我是分割线=======a b c
本地变量:当前用户自定义的变量。当前进程中有效,其他进程及当前进程的子进程无效。
环境变量:当前进程有效,并且能够被子进程调用。
全局变量:全局所有的用户和程序都能调用,且继承,新建的用户也默认能调用.
内置变量:shell本身已经固定好了它的名字和作用.
变量类型 | 作用域 | 生命周期 |
---|---|---|
本地变量 | 当前shell环境(子shell不能用) | 脚本结束或终端结束 |
环境变量 | 当前shell或者子shell | 当前进程结束 |
全局变量 | 所有用户及shell环境 | 关机 |
内置变量 | 所有用户及shell环境 | 关机 |
参考:
shell中数组可分为两类
普通数组:只能使用整数作为数组索引(元素的索引)
关联数组:可以使用字符串作为数组索引(元素的索引)赋值以及读取语句如下
转载地址:http://pzxwb.baihongyu.com/