啥是shell的变量?
shell也可以算作一种程序设计语言,所以shell的变量和其他语言的变量概念是一样的。
即:
变量是存数的代词,指代的就是它所存的那个数。
由三个元素组成:变量类型、变量名、变量值。
本地变量:
在现在用户使用的shell的生命周期的脚本中使用
变量名 = “变量值”
通过readnoly来设置成只读型变量
set命令:查看本地变量有哪些
readonly:查看有几个只读变量
环境变量:
用于所以的用户进程 包括子进程,shell,脚本,应用 等
位于$HOME/.bash_profile
或者/etc/profile 修改所有用户的环境变量
环境变量用 export修改
env 或者 export查看当前环境变量
变量替换 :用变量的名字替换他的值
这给在shell的特性里面阐述过,使用``或者$来替换
这里记录{}的使用
${变量名:+ 值2} 如果变量已经设置 则输出值2,如果变量未设置 则输出为空
${变量名:?值2} 如果变量已经设置 则输出变量的值,如果变量未设置 则输出 变量名 : 值2
${变量名:- 值2} 如果变量已经设置 则输出变量的值,如果变量未设置 则输出 值2
${变量名:+ 值2} 如果变量已经设置 则输出变量的值,如果变量未设置 则设置为值2并 显示
变量的清除:
unset
只读变量无法清除
位置变量
运行一个程序 时可以用位置参数来传递值
通常只允许10个 $0~$9
1.向脚本传递参数
$ 0表示脚本名字
2向系统命令传递参数
标准变量:bash默认建立一些环境变量就是标准变量,可在/etc/profile中进行定义,
可以通俗的说就是不是你加的而是装好机子带的那些环境变量,
命令 意义
HOME 用户主目录
IFS 默认分隔符
MAIL 邮箱地址
MAILCHECK 邮箱检查间隔
PWD 用户当前工作目录
LOGNAME 当前用户登录名
特殊变量
$# 传递到脚本的参数个数
$*以一个单字符串显示所有脚本的参数 可以超过9个
$$显示当前脚本进程号
$!后台最后一个进程号
$@和 $#一样当时需要加双引号 返回时也带双引号
$- 和set一样
$? 显示命令执行后的状态 0代表无错误 其他都代表有错误
影响变量的命令
declare 设置或显示变量
-f 只显示函数名
-r 创建只读命令
-x 创建转出变量
-i 创建整数变量
+替代减 可以颠倒含义 -r不可颠倒
export 用于创建环境变量
-- 选项结束 后续参数都是实参
-f 名字都是函数3
-n 全局变量变为局部变量
-p 显示全局变量列表
readonly 显示和设置只读变量
set 设置和重设Shell
shift [n] 移动位置变量 吧$3给$2 $2给$1
typeset 与 declore同义
unset 删除变量
-f 删除只读变量