一、用户自定义变量

  1. 什么是变量

  变量是计算机内存的单元,其中存放的值可以改变。当Shell脚本需要保存一些信息时,如一个文件名或者一个数字,就把它存放在一个变量中。每个变量都要有一个名字,以便用来引用。使用变量可以保存有用信息,使系统获知用户相关设置,变量也可以用来保存暂时信息。

  2. 变量设置规则

  (1)变量名称可以由字母、数字和下划线组成,但不能以数字开头。

  (2)在Bash中,变量的默认类型都是字符串型,如果要进行数字运算,需要指定变量的类型。

  (3)设置变量时,变量用等号连接值,等号左右两侧不能有空格。如:name=zhongguo

  (4)变量的值如果有空格,则需要用单引号或双引号括起来。如:name="Zhong Guo"

  (5)在变量值中,可以使用转义符“\”。

  (6)如果需要增加变量的值,那么可以进行变量值的增加。不过变量需要用双引号包含"$变量名"或者用${变量名}包含。

  (7)如果把命令的结果作为变量值赋予变量,则需要使用反引号或$()包含命令

  (8)环境变量名称建议大写,以便区分。

  3. 变量分类

  (1)用户自定义变量:由用户定义变量名,变量的值以及变量的作用,也叫作本地变量。

  (2)环境变量:这种变量中主要保存的是和系统操作环境相关的数据。系统允许用户自己添加新的环境变量。

  (3)位置参数变量:这种变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的。

  (4)预定义变量:是Bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的。

  4.我们可以用set来查看所有变量的值,用 unset 变量名 来删除变量的值。

二、环境变量

  1. 环境变量是什么

  用户自定义变量只在当前的Shell中生效,而环境变量会在当前Shell和这个Shell的所有子Shell中生效。如果把环境变量写入相应的配置文件,会在所有Shell中生效。可以使用pstree 命令来查看父Shell和子Shell。

  2. 设置环境变量

  (1)申明变量

    export 变量名=变量值

  (2)查询变量

    env

  (3)删除变量

    unset 变量名

三、位置参数变量

  1. 位置参数变量

   位置参数变量是固定的,它的变量名和作用也是固定的。

位置参数变量

作用

$n

n为数字,$0代表命令本身,$1~$9代表第一到第九个参数,十以上的参数需要用大括号包含,如:${10}

$*

这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体。

$@

这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待

$#

这个变量代表命令行中所有参数的个数

  1.1 位置参数变量 --$n

    $n 的主要作用就是用来把命令行和命令的参数传递到脚本当中。如:

#!/bin/bash

num1=$1
num2=$2
sum=$(($num1+$num2))
echo $sum

    运行脚本可以得到:

    

  1.2 位置参数变量 --$*、$@、$#

    $*和$@都是把参数向脚本里传递,$*是把所有的参数当作一个整体传递,$@也是传递所有的参数,只是每个参数都单独传递。$#是传递所有参数的个数。如:

#!/bin/bash

for i in "$*"
    do
           echo $i
    done
for y in "$@"
    do
        echo $y
    done
echo "参数个数为:$#"

    运行脚本可以得到:

  

四、预定义变量

  1. 预定义变量

预定义变量

作用

$?

判断上一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0(具体是哪个数由命令决定),则证明上一个命令执行不正确。

$$

显示当前进程的进程号(PID

$!

显示后台运行的最后一个进程的进程号(PID

  1.1 预定义变量--$?

    它是用来判断上一个命令的执行情况的。返回0,则命令正确执行;返回非0数,则命令错误。就如之前的逻辑与&&与逻辑或||,后面的命令就是用此来判断前一个命令是否正确执行。

    

  1.2 预定义变量--$$与$!

    $$是用来显示当前进程的进程号,$!是用来显示后台运行的最后一个进程号

#!/bin/bash

echo "$$"
#此进程就是执行此脚本test.sh的进程
find /root -name sum.sh &
#使用find命令在root目录下查找文件
#符号&代表把此命令放入后台执行
echo "$!"

  

  2. 接收键盘输入

  语法:read [选项] [变量]

  选项:-p "提示信息"  在等待read输入时,输出的提示信息。

       -t 秒数     指定等待用户输入的时间,如果不指定,read会一直等待下去。

     -n 字符数     指定read命令接受输入的字符数,达到指定的字符数,read就会执行

     -s       隐藏输入的数据,适用于机密信息是输入。

  变量:用于存放输入信息

#!/bin/bash

read -t 30 -p "请输入你的命令:" name
echo "你的名字是:$name"
#提示输入名字并等待30秒,变量name用来保存输入信息
read -t 30 -s -p "请输入你的年龄:" age
echo "你的年龄是:$age"
#提示输入年龄并等待30秒,-s把输入信息给隐藏了
read -t 30 -n 1 -p "请选择你的性别[M/F]:" sex
#提示输入年龄,-n 1指定只接受1个字符就会执行
echo "你的性别是:$sex"

    

 

posted on 2019-01-16 17:43  透明的千纸鹤  阅读(147)  评论(0编辑  收藏  举报