linux基础学习-19.3-Shell脚本-变量

1、shell环境变量

一、变量类型 {#31-变量类型}

变量可分为2类

1)环境变量(也能够为全局变量);能够在建立他们的shell及其生出来的子shell中使用,环境变量又能够分为自定义环境变量和bash内置的环境变量。linux

2)局部变量(普通变量);只能在建立他们的shell函数或shell脚本中执行使用。git

环境变量

环境变量用于定义shell的运行环境,保证shell命令的正确执行,shell经过环境变量来肯定登录用户名、命令路径、终端类型、登录目录等,全部的环境变量都是全局变量,可用于全部子进程中,包括编辑器、shell脚本和各种应用。但crond计划任务除外,还须要从新定义环境变量。github

环境变量能够在命令行中设置,但用户退出这些变量志也会丢失,所以最好在用户家目录的.bash_profile文件中或全局配置/etc/bashrc 、/etc/profile 文件或者/etc/profile.d 目录中定义。将环境变量放入profile 文件中,每次用户登录这些变量值都将初始化。shell

一般,全部环境变量均为大写。环境变量应用于用户进程前,都因该用export命令导出。vim

例如:export OLDBOY=1 {#例如:export-oldboy1}

2、shell局部变量

一、 shell中变量名及变量内容的要求

通常是字母、数字、下划线组成。且以字母开头。如oldboy oldboy123 oldboy\_training .变量的内容,可使用单引号或双引号引发来,或不加引号。bash

虽然变量能够下划线开头,但相似变量都是比较特殊的,都是系统本身用的,咱们尽可能少用。编辑器

[root@oldboyedu ~]# _123=eee函数

[root@oldboyedu ~]# echo $_123测试

eee命令行

[root@oldboyedu ~]# a=192.168.1.2

[root@oldboyedu ~]# echo "a=$a"

a=192.168.1.2

[root@oldboyedu ~]# b='192.168.1.2'

[root@oldboyedu ~]# echo "b=$b"

b=192.168.1.2

[root@oldboyedu ~]# c="192.168.1.2."

[root@oldboyedu ~]# echo "c=${c}"

c=192.168.1.2.

二、变量名及变量内容定义小结

1)变量名只能由字母、数字。下划线组成,且以字母开头。

2)规范的变量名写法定义:见名知意。

a: OldboyAge=1 每一个单词首字母大写

b: oldboy_age=1 每一个单词之间用“_”

c:oldboyAgeSex=1 驼峰语法;首个单词字母小写,其他单词首字母大写。

3)=号的知识,a=1中的等号是赋值的意思,比较是否是相等于为“==”

4)打印变量,变量名前接$符号,变量名后接紧接字符时候,要用大括号括起来

5)注意变量内容引用方法,通常为双引号,简单连续字符能够不加引号,但愿原样输出,使用单引号。

6)变量内容是命令,要用反引号``或者$()把变量括起来使用。

3、特殊变量

一、位置变量

1)$0 获取当前执行的shell脚本的文件名,若是执行脚本带路径那么就包括脚本路径。

2)$n 获取当前执行的shell脚本的第n个参数值,n=1..9, 当n为0时表示脚本的文件名,若是n大于9用括号括起来{10}{11}…… ,参数以空格隔开。

3)$#获取当前执行的shell脚本后面接参数的总个数。

[root@oldboyedu scripts]# vim arg.sh

#!/bin/bash

##############################################################

# File Name: arg.sh

# Version: V1.0

# Author: oldboy

# Organization: www.oldboyedu.com

# Created Time : 2017-02-21 21:46:56

# Description:

##############################################################

echo $0

echo $1 $2 $3 $4 $5 $6 $7 $8 $9 ${10} ${11} ${12} ${13}

echo $#

arg.sh [+] 10,8 All

"arg.sh" 22L, 301C written

[root@oldboyedu scripts]# sh arg.sh

arg.sh

[root@oldboyedu scripts]# sh /server/scripts/arg.sh

/server/scripts/arg.sh

[root@oldboyedu scripts]# sh arg.sh 1 2 3 1 1 2 2 2 2 2 2 1 1 2 1 2 1

arg.sh

1 2 3 1 1 2 2 2 2 2 2 1 1

17

[root@oldboyedu scripts]# sh arg.sh 1 2 3 1 1 2 2 2 2 2 2 1 1 2 1 2 1 3 8 9 8 6

arg.sh

1 2 3 1 1 2 2 2 2 2 2 1 1

22

二、进程状态变量

$? 获取执行上一个指令的返回值(0为成功,非0为失败)

测试

[root@oldboyedu scripts]# cd /ddf

-bash: cd: /ddf: No such file or directory

[root@oldboyedu scripts]# echo $?

1

[root@oldboyedu scripts]# sh arg.sh

arg.sh

0

[root@oldboyedu scripts]# echo $?

0

小结:

$?返回值参考

0 表示运行成功

2权限拒绝

1-125表示运行失败,脚本命令、系统命令错误或参数传递错误。

126 找到该命令,但没法执行

127 未找到要运行的命令

>128 命令被系统强制结束

4、变量的数值计算

一、 (()) 用法(经常使用于简单的整数运算)

[root@oldboyedu scripts]# echo $((1*2+3/4-4))

-2

[root@oldboyedu scripts]# echo $[1*2+3/4-4]

-2

[root@oldboyedu scripts]# ((a=1+2*3-4%3))

[root@oldboyedu scripts]# echo $a

6

[root@oldboyedu scripts]# ((a=1+2**3-4%3))

[root@oldboyedu scripts]# echo $a

8

[root@oldboyedu scripts]# b=$((1+2**3-4%3))

[root@oldboyedu scripts]# echo $b

8

[root@oldboyedu scripts]#

小结 {#小结:}

1)“(())” 在命令行执行时不须要$符号,可是输出须要$符号。

2)“(())” 里全部字符之间有无或多个空格没有任何影响。

3)[ ]与(()) 做用是同样的

二、算术运算符号

5、如何定义变量

一、脚本中直接赋值

[root@oldboyedu scripts]# vim arg.sh

#!/bin/bash

a=6

b=2

echo "a-b =$(( $a - $b ))"

echo "a+b =$(( $a + $b ))"

echo "a*b =$(( $a * $b ))"

echo "a/b =$(( $a / $b ))"

echo "a**b =$(( $a ** $b ))"

echo "a%b = $(( $a % $b ))"

[root@oldboyedu scripts]# sh arg.sh

a-b =4

a+b =8

a*b =12

a/b =3

a**b =36

a%b = 0

二、命令行传参 {#72-命令行传参}

利用位置变量

[root@oldboyedu scripts]# vim arg.sh

#!/bin/bash

a=$1 #不须要把后面的$a、$b都改 {#a1---不须要把后面的a、b都改}

b=$2

echo "a-b =$(( $a - $b ))"

echo "a+b =$(( $a + $b ))"

echo "a*b =$(( $a * $b ))"

echo "a/b =$(( $a / $b ))"

echo "a**b =$(( $a ** $b ))"

echo "a%b = $(( $a % $b ))"

练习题

一、shell都有哪些变量

二、如何设置变量及设置变量的规则都有哪些?

三、叙述如何定义变量?

四、说出5个算数运算符及含义

相关文章
相关标签/搜索