您的位置:首页 > 运维架构 > Shell

Shell变量和基础知识(二)

2013-12-12 19:40 876 查看
Shell变量类型主要有:环境变量,位置变量,预定义的特殊变量以及用户自定义变量等。

(一)环境变量

环境变量时用来设置系统运行环境的变量。环境变量的名称由大写字母组成,常用的如下:

名称

说明

HOME

用户主目录的全路径名

PATH

定义了一些目录路径,用冒号(:)隔开。

TERM

显示当前终端的类型

PWD

显示当前工作路径的绝对路径

PS1

主提示符

PS2

辅助提示符

SHELL

Shell的解释器路径

MAIL

当前邮箱的路径

LOGNAME

登陆用户的用户名

UID

当前用户的id

添加新路径可以用

$PATH=$PATH:路径名

例,



(二)位置参数

根据出现在命令行上的参数来确定变量值,其中,$0代表当前执行的命令名或者是shell文件的文件名,$1,$2,$3,$4,$5,$6,$7,$8,$9分别代表第一个参数,当命令行中的参数多于9个时,使用shift命令来左移,

例,zzz文件内容

zzz文件内容
#! /bin/bash
Echo $0,$1,$2
输入参数为num1和test,输出$0当前执行命令名,$1赋值为num1,$1赋值为test:



#! /bin/bash
Echo $0,$1,$2
#! /bin/bash
Echo $0,$1,$2,$3,$4,$5,$6,$7,$8,$9
Shift
Echo $0,$1,$2,$3,$4,$5,$6,$7,$8,$9
Shift 3
Echo $0,$1,$2,$3,$4,$5,$6,$7,$8,$9




(三)变量的操作

创建变量

1. 用declare来申明变量

2. 用typeset来申明变量

3. 直接用变量名=变量值来定义变量(这个是最常用的)要是变量值有空格,用双引号就可以了

区分变量:可以擦用大括号来区别变量和其他字符
删除变量:用unset来删除变量



(四)变量赋值

使用read命令来读入数据:

Read命令是一个内置命令,从输入设备或者是一个文件读取数据。Read命令读取一个输入行直到遇到一个换行符为止。规则如下:

1. 多个变量之间用空格隔开

2. 若变量个数与数据个数相等,则对应赋值。

3. 若变量个数大于输入数据个数,则后面的变量赋值为空

4. 若变量个数小于输入数据个数,则多余的数据都赋值为最后一个变量。



直接赋值:



使用命令行赋值:



利用命令的输出结果赋值。里面的变量的赋值用反引号才可以。



从文件中读入数据实现赋值:

(五)变量输出端:

echo

echo可以输出字符串也可以输出变量,例,



Prinft格式化输出

命令格式说明:

\”:双引号
\\:反斜杠
\n:回车
\r:换行
%%:百分号
%d:数字
%f:浮点数
%s:字符

例,



%-20s表示左对齐,20个字符宽度,%20.4f表示是右对齐,20个字符,4位小数

(六)数组:

数组是一组数值的集合。

数组的定义:

name=(element1,element2.。。。)

或者是name[index]=element

数组的取值:

${name[index]}

数组的长度

${#name[*]}

数组的复制:

*和@都是提取整个数组元素

不同的是@是把原数组的内容复制到一个新数组中,生成的新数组和以前的数组是一样的,符号*是把原来的数组中所有的元素作为新数组的一个元素

all=(“$name[*]”)

list=(“${name[@]}”)



数组元素的长度:

${#name[i]}

(七)算术运算

Expr命令:可以进行简单的整数运算,+,-,*,\,%,运算符,命令要用反引号

Let命令:与expr可以换用,不过let命令中不用加$符号

浮点数运算可以bc和awk运算

例,

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: