Shall的变量功能

1. bash shell的内建命令

bashshell,中内建了许多命令,如何区分命令是否为shell'内建命令还是来自与外部命令,yongtype这个命令来查寻。type 『-tpa』 name 不加任何命令时,type会显示出他是内部还是外部得来。

加入-t 下面会显示出如下。

    file :表示为外部命令

    alias :表示该命令为命令别名所配置的命令

   builtin:表示为内部命令。

2变量

变量大体上来说就是用简单的字符来表示复杂的字符,分为环境变量与自定义变量。取用变量echo,例如echo $kong或echo ${kong} kong就带表一个变量,前面必须加上$。用=可以配置修改变量的内容,echo $kong 因为kong尚未被配置,所以并未显示任何数据。接下来kong=admin

echo $kong 就会显示出admin,注意等号两边不能出现空格,变量名称只能为字母或者是数字但开头不能为数字,变量内容如果出现空格可使用双引号“”或单引号‘’但是请注意 双引号之间的特殊符号如$可以保留原来特性,单引号内的特殊字符仅为一般的字符(纯文本)。可用跳脱字符\将一些特殊符号变为一般字符。在一串命令中还需药企他命令提供的信息,可以使用反单引号``是esc下面的那个键。或$(命令)如 kong=$(uname -r)再echo $kong 可得 2.6.18-128.el5

若该变量扩增变量内如容 PATH=“$PATH”:/home/bin

若该变量需要在其他子程序上运行 则需要用export来使变量成为环境变量 export PATH

取消变量的方法为 unset  例如 unset myname

3环境变量的功能

利用 env, export 来查看shell中有多少默认的环境变量,用set 来观察所有的变亮,  locale 为显示语系变量,

4变量键盘读取,数组与宣告

read 【-pt】variable

-p 后边加描述语言 -t 加入限制时间

例如。read -p “please keyin your name :” -t 30 named(在三十秒内输入)

declare /typeset

declare或typeset 是一样的功能,就是在宣告变量的类型,如果使用declare后没有任何的参数,那么bash会将所有的变量名称都叫出来 跟set一样,

declare【-aixr】variable

-a 将变量定义为数组类型

-i 定义为整形数字(integer)类型

-x 与export一样将变量定义为环境变量

-r 将变量配置为readonly型,该变量不了被更改内容 ,也不能unset

5变量配置方式

变量配置方式 说明
${变量#关键词}
${变量##关键词}
若变量内容从头开始的数据符合『关键词』,则将符合的最短数据删除
若变量内容从头开始的数据符合『关键词』,则将符合的最长数据删除
${变量%关键词}
${变量%%关键词}
若变量内容从尾向前的数据符合『关键词』,则将符合的最短数据删除
若变量内容从尾向前的数据符合『关键词』,则将符合的最长数据删除
${变量/旧字符串/新字符串}
${变量//旧字符串/新字符串}
若变量内容符合『旧字符串』则『第一个旧字符串会被新字符串取代』
若变量内容符合『旧字符串』则『全部的旧字符串会被新字符串取代』

6,变量的测试,

某些时刻我们常常需要判断某个变量是否存在,若变量存在,则是用既有的配置,若变量不存子则给予一个常用的配置。

测试一下是否存在 username 这个变量,若不存在则给予 username 内容为 root
[root@www ~]# echo $username<==由于出现空白,所以 username 可能不存在,也可能是空字符串
[root@www ~]# username=${username-root}
[root@www ~]# echo $username
root       <==因为 username 没有配置,所以主动给予名为 root 的内容。
[root@www ~]# username="vbird tsai"<==主动配置 username 的内容
[root@www ~]# username=${username-root}
[root@www ~]# echo $username
vbird tsai <==因为 username 已经配置了,所以使用旧有的配置而不以 root 取代

这个可能会出现问题,因为username可能已经被配置为空字符串。如果是这样的话可以使用如下范例

:若 username 未配置或为空字符串,则将 username 内容配置为 root
[root@www ~]# username=""
[root@www ~]# username=${username-root}
[root@www ~]# echo $username<==因为 username 被配置为空字符串了!所以当然还是保留为空字符串!
[root@www ~]# username=${username:-root}
[root@www ~]# echo $username
root  <==加上『 : 』后若变量内容为空或者是未配置,都能够以后面的内容替换!


你可能感兴趣的:(变量)