啥是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   删除只读变量