Shell变量和基础知识(二)

Shell变量类型主要有:环境变量,位置变量,预定义的特殊变量以及用户自定义变量等。

(一)环境变量

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

名称

说明

HOME

用户主目录的全路径名

PATH

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

TERM

显示当前终端的类型

PWD

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

PS1

主提示符

PS2

辅助提示符

SHELL

Shell的解释器路径

MAIL

当前邮箱的路径

LOGNAME

登陆用户的用户名

UID

当前用户的id

添加新路径可以用

$PATH=$PATH:路径名

 例,

Shell变量和基础知识(二)_第1张图片

(二)位置参数

根据出现在命令行上的参数来确定变量值,其中,$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

Shell变量和基础知识(二)_第2张图片

(三)变量的操作

  • 创建变量

1. 用declare来申明变量

2. 用typeset来申明变量

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

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

 Shell变量和基础知识(二)_第3张图片

(四)变量赋值

 

  • 使用read命令来读入数据:

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

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

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

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

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

Shell变量和基础知识(二)_第4张图片

 

  • 直接赋值:

 Shell变量和基础知识(二)_第5张图片

  • 使用命令行赋值:

Shell变量和基础知识(二)_第6张图片

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

Shell变量和基础知识(二)_第7张图片

 

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

 

(五)变量输出端:

  • echo

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

Shell变量和基础知识(二)_第8张图片

  • 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[@]}”)

Shell变量和基础知识(二)_第9张图片

  • 数组元素的长度:

${#name[i]}

(七)算术运算

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

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

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

例,

Shell变量和基础知识(二)_第10张图片

你可能感兴趣的:(Shell变量和基础知识(二))