【Linux学习 009】脚本编程之变量和条件判断

一、Bash环境变量

bash中变量有四种种类型:环境变量、本地变量(局部变量)、位置变量、特殊变量。

1.环境变量

环境变量作用范围最广,所有子bash进程都能够访问环境变量中的值,定义环境变量的方法是使用export关键字。举例:

[email protected]:~$ export A=abc
[email protected]:~$ echo $A
abc
[email protected]:~$

2.本地变量

本地变量作用范围是当前bash,子bash访问不到父bash中定义的变量,定义本地变量的方法是 VARNAME=value。举例:

[email protected]:~$ B=cde
[email protected]:~$ echo $B
cde
[email protected]:~$

局部变量是本地变量的一种特殊形式,作用域更小,它只能在方法中使用,使用关键字local定义。

3.位置变量

位置变量的作用类似于正则表达式中的后项引用,正则表达式中使用"\n"来引用,这里使用"$n"来引用。

4.特殊变量

特殊变量叶叫做“系统变量”,这种类别的变量是bash自己定义的变量,比如$?就是一种特殊变量(系统变量),它用来保存上一条命令的执行结果,0代表执行成功,其它(1-255)代表执行失败

[email protected]:~$ ls /tmp
config-err-YXMEYj
fcitx-socket-:0orbit-kdyzm
sni-qt_sogou-qimpanel_1597-Mn3jk9
sogou-qimpanel:0.pid
sogou-qimpanel-cell
sogou-qimpanelkdyzm
systemd-private-251274e9dff14256aadaac748704e759-colord.service-Q7u1po
systemd-private-251274e9dff14256aadaac748704e759-rtkit-daemon.service-I81zdW
systemd-private-251274e9dff14256aadaac748704e759-systemd-timesyncd.service-SrkrjY
unity_support_test.0
[email protected]:~$ echo [email protected]:~$ ls /templs: cannot access /temp: No such file or directory
[email protected]:~$ echo [email protected]:~$

二、如何实现变量引用

使用${VARNAME}实现变量引用,其中大多数情况下{}能够直接省略,不能省略的情况:

[email protected]:~$ ANIMAL=pig
[email protected]:~$ echo "there are some ${ANIMAL}s"
there are some pigs
[email protected]:~$

以上echo命令之后必须使用"",而不能使用‘‘,这是因为""是弱引用,变量能够被解析,‘‘是强引用,变量不能被解析。

[email protected]:~$ echo ‘there are some ${ANIMAL}s‘
there are some ${ANIMAL}s
[email protected]:~$

三、杂项

1.如果脚本是在命令行中执行的,那么该脚本能够直接访问当前shell定义的变量,但是如果是非命令行运行的脚本,就必须手动配置环境变量了。

2./dev/null是一个数据黑洞,可以将不需要显示的数据都重定向到这里丢弃掉。

3.使用unset命令能够解除变量绑定,释放内存空间。

4.如何查看当前shell的环境变量

使用printenv、env、export三个命令都能够查看当前bash中的环境变量。

5.如何运行一个脚本

指定脚本的路径,回车即可。需要注意的是如果脚本文件在当前路径下,也需要指定./作为当前路径的标志,否则直接使用文件名会提示找不到命令,原因就是命令行默认认为你输入的是命令,所以回到PATH路径下找,结果没找到,就会报错。

[email protected]:~$ command.sh
command.sh: command not found
[email protected]:~$ ./command.sh
Hello,World!

注意创建脚本文件之后一定要加上“可执行”权限,因为默认创建的文本文件是不可执行的。

chmod a+x ./command.sh

如果不想给脚本文件加上可执行权限但是还想要执行该脚本的话,直接使用

bash FILE

即可执行。

四、如何写一个脚本

在写一个脚本之前必须指定“魔数”,指定魔数的作用就是告诉系统到哪里去找“解析器”解析脚本内容,在使用bash的情况下,指定魔数的方法是:

#! /bin/bash

接下来就是一些命令的堆砌,实际上脚本编程就是那么简单。

五、条件测试

1.条件测试类型包括整数测试、字符测试、文件测试

2.条件测试的三种命令

[ expression ]
[[ expression ]]    #}"[["是bash中的关键字,而[不是
test expression

3.整数比较的操作符

-eq    #测试两个数是否相等
-ne    #测试两个书是否不想等
-lt    #小于比较测试
-gt    #大于比较测试
-le    #小于等于测试
-ge    #大于等于测试

4.命令之间的逻辑关系

&&    #与关系
||    #或关系

六、条件判断

1.条件判断的结构如下:

if 判断条件;then
    statement1
    statement2
else
    statement3
    statement4
fi

2.判断命令执行结果返回值还是判断命令执行状态返回值

命令执行结果返回值:命令执行的返回值

命令执行状态返回值:只有两个结果,一个是0表示执行成功,非0表示执行失败,使用$?可以查看改值。

举例:该处的判断条件判断的是命令执行状态返回值

#! /bin/bash
if id user2 &> /dev/null;then
        echo "user1存在!"
else
        echo "user1不存在!"
fi

七、练习

1.给出一个用户名,判断该用户是管理员还是普通用户

#! /bin/bash
NAME=kdyzm
USERID=`id -u $NAME`
if [ $USERID -eq 0 ] ;then
        echo "Admin User"
else
        echo "Common User"
fi

2.编写一个脚本,判断是否有用户的默认shell为bash,如果有,则显示有多少个这类用户,否则就显示没有这类用户。

#! /bin/bash
USERS=`grep "bash$" /etc/passwd | wc -l`
if [ $USERS -eq 0 ] ;then
        echo "没有默认shell为bash的用户存在!"
else
        echo "使用bash为默认shell的用户数量为:$USERS"
fi
时间: 2024-10-06 00:52:15

【Linux学习 009】脚本编程之变量和条件判断的相关文章

Linux学习笔记--bash脚本编程之二、条件判断

 bash脚本编程之二.条件判断 条件判断: 如果用户不存在 添加用户,给密码并显示添加成功: 否则 显示用户已存在,没有添加 bash中如何实现条件判断? 整数测试 字符测试 文件测试 条件测试的表达式:     [expression]     [[expression]]     test expression 整数比较: -eq:测试两个整数是否相等:比如 $A -eq $B     -ne:测试两个整数是否不等:不等,为真:相等,为假:     -qt:测试一个数是否大于另一个数:大于

Linux学习笔记--bash脚本编程之一变量、变量类型

bash脚本编程之一变量.变量类型 shell编程: 编译器,解释器 编程语言:机器语言.汇编语言.高级语言 静态语言:编译型语言 强类型(变量)语言 事先转换成可执行格式 C.C++.JAVA.C# 动态语言:解释型语言       on the fiy                                   弱类型 边解释边执行 ASP.ASP.net.PHP.shell.Python.perl 面向过程:shell.C   面向对象:JAVA.Python .Perl.C++

学习Shell脚本编程(第4期)_在Shell程序中的使用变量

变量的赋值 变量的访问 变量的输入 4.1 变量的赋值     在Shell编程中,所有的变量名都由字符串组成,并且不需要对变量进行声明.要赋值给一个变量,其格式如下: 变量名=值  注意: 等号(=)前后没有空格 例如: x=6 a="How are you " 表示把6赋值给变量x,字符串"How are you "赋值给变量a. 4.2 访问变量值 如果要访问变量值,可以在变量前面加一个美元符号"$",例如: [[email protect

学习Shell脚本编程(第2期)_编写修改权限及执行Shell程序的步骤

编写Shell程序 执行Shell程序 Shell程序有很多类似C语言和其他程序设计语言的特征,但是又没有程序语言那样复杂.Shell程序是指放在一个文件中的一系列Linux命令和实用程序.在执行的时候,通过Linux操作系统一个接一个地解释和执行每条命令.首先,来编写第一个Shell程序,从中学习Shell程序的编写.修改权限.执行过程. 2.1 编辑Shell程序 编辑一个内容如下的源程序,保存文件名为date,可将其存放在目录/bin下. [[email protected] bin]#v

学习Shell脚本编程(第3期)_在Shell程序中使用的参数

位置参数 内部参数 如同ls命令可以接受目录等作为它的参数一样,在Shell编程时同样可以使用参数.Shell程序中的参数分为位置参数和内部参数等. 3.1 位置参数 由系统提供的参数称为位置参数.位置参数的值可以用$N得到,N是一个数字,如果为1,即$1.类似C语言中的数组,Linux会把输入的命令字符串分段并给每段进行标号,标号从0开始.第0号为程序名字,从1开始就表示传递给程序的参数.如$0表示程序的名字,$1表示传递给程序的第一个参数,以此类推. 3.2 内部参数 上述过程中的$0是一个

Linux系统shell脚本编程——生产实战案例

Linux系统shell脚本编程--生产实战案例     在日常的生产环境中,可能会遇到需要批量检查内网目前在线的主机IP地址有哪些,还可能需要检查这些在线的主机哪些端口是开放状态,因此依靠手工来检查是可以实现,但比较费时费力,所以需要结合shell脚本来实现批量检查的功能,那么今天就来做个小小的实验. 1.开发脚本前准备 一般大家都知道,测试主机是否在线,常用的命令无非就是ping.nmap,因此,首先找一个地址来测试下ping命令的效果 [[email protected] scripts]

bash脚本编程之变量、变量类型、条件测试、算术运算、及特殊变量

一.学习目的 1.了解bash脚本的变量类型及变量的使用 2.了解bash中条件测试的种类及如何在bash中实现条件的判断 3.学会在bash中做算术运算 4.了解特殊变量的使用 二.学习内容 1). ①.bash的变量类型: 环境变量 .本地变量.局部变量.位置变量.特殊变量 环境变量: export VALUENAME = VALUE 作用领域是当前的shell进程及其子进程 本地变量: VALUENAME= VALUE 作用领域为整个bash的进程 局部变量:local VALUENAME

学习Shell脚本编程(目录)

所涉及的内容如下: Shell命令行的运行 编写.修改权限和执行Shell程序的步骤 在Shell程序中使用参数和变量 表达式比较.循环结构语句和条件结构语句 在Shell程序中使用函数和调用其他Shell程序 目录如下: ...... 学习Shell脚本编程(目录)

linux学习—shell脚本知识点总结

Shell脚本 --Shell脚本有点像早期的批处理文件,将一些命令汇总起来一次执行,但Shell有更强大的功能,可以类似于程序的编写,不需要编译就能执行,使用起来很方便,可以简化我们日常的管理工作. 目录 什么是Shell 脚本的运行方法 #!(读shabang)的作用详解 结合案例分析变量类型 特殊变量及其[email protected] $*的区别 退出状态 算数运算 test和[ expression ]判断 一.什么是Shell 我们知道管理整个计算机硬件的其实是核心(kernel)