shell 脚本 的 基本知识(III)

shell中的变量

一、变量的定义:变量即在程序运行过程中它的值时允许改变的量;

 变量是用一串固定的字符来表示不固定的值的一种方法;


 变量是一种使用方便的占位符,用于引用计算机内存地址,该地址可以存储Script运行时可更改的程序信息;


 在shell中变量是不能永久保存在系统中的,必须在文件中声明。

二、在shell脚本中变量的种类

在shell中变量分为环境级变量、用户级变量、系统级变量;

环境级变量只在当前shell中生效,shell关闭变量消失;

用户级变量写在用户的主文件中,只针对当前用户失效;

系统级变量被写在系统的配置文件/etc/profile或/etc/profile.d/中,对所有用户都生效

三、shell脚本中变量的定义方法

1、环境级变量,只在当前shell中生效,export WESTOS=1

这里写图片描述

2、用户级变量,只针对当前用户生效。

vim ~/.bash_profile在文件里写入export WESTOS=1;

source重新载入文件(只能载入增加)
这里写图片描述
这里写图片描述

3、系统级变量,对所有用户都生效;

vim /etc/profile在配置文件里同样写入export WESTOS=1

这里写图片描述
这里写图片描述

4、如何实现让本来在/mnt下的脚本在任何环境下都可以直接执行

像上面ls在任何路径下都可以执行,这是因为ls的执行路径写在了配置文件里,$PATH可以查看;

下面我们将/mnt也加入主文件里,此时在当前用户,何种环境都可以执行/mnt下都脚本,不用写绝对路径

这里写图片描述
这里写图片描述

四、字符的转译

1、\转移一个字符

[root@localhost ~]# echo \$5
[root@localhost ~]# echo \#5

这里写图片描述
这里写图片描述

2、" "弱引用,批量转译“ ”中出现的字符;

\ ` 可以转译,跟东西就不转译) ! 不能转译

这里写图片描述

3、${}变量声明

这里写图片描述

4、‘ ’强引用

这里写图片描述

5、``优先执行里面的内容,``与$()一样,但是区别是``不能连用

这里写图片描述
这里写图片描述

五、变量值传递

$1 脚本后的第一串字符

$2 脚本后的第二串字符

$3 脚本后的第三串字符

$# 脚本后所跟字符的个数

$* 脚本后的所有字符串(一个个体)

$@ 脚本后的所有字符串(一个整体)

这里写图片描述

$* 脚本后的所有字符串(一个个体)

这里写图片描述
这里写图片描述

$@ 脚本后的所有字符串(一个整体)

这里写图片描述
这里写图片描述

<一、测试:(非交互式传参)建立用户名和设置密码>

这里写图片描述
##将脚本内do的第三行改为: userdel -r $USERNAME 意思是删除
这里写图片描述
这里写图片描述

六、用read实现变量传递

-p表示显示
-s表示加密

[root@localhost mnt]# vim test.sh
[root@localhost mnt]# cat test.sh
#!/bin/bash
read -p "Please input a number: " WESTOS
echo $WESTOS
[root@localhost mnt]# sh test.sh
Please input a number: 123
123
[root@localhost mnt]# vim test.sh
[root@localhost mnt]# cat test.sh
#!/bin/bash
read -p "Please input a number: " -s IP
echo " "
ping -c1 -w1 $IP &> /dev/null && echo $IP is up || echo $IP is down
[root@localhost mnt]# sh test.sh
Please input a number:  
172.25.254.129 is up

这里写图片描述

<二、测试:(交互式传参)输入命令建立用户和密码>

这里写图片描述

##将脚本内do的第三行改为: userdel -r $USERNAME 意思是删除

这里写图片描述

七、Linux系统中命令别名的设定

1、alias 查看命令的别名

这里写图片描述

测试:

下面我们将vim命令赋予别名xie;即输入xie即可进入vim编辑

1)临时设定 编辑 ~/.bashrc

这里写图片描述
这里写图片描述
这里写图片描述

2)永久设定,在/etc/bashrc里同样编辑如下

[root@localhost ~]# vim /etc/bashrc
[root@localhost ~]# source /etc/bashrc    ##source载入可以alias查看
[root@localhost ~]# su - student
Last login: Thu Jun 21 08:53:38 EDT 2018 on pts/1
[student@localhost ~]$ xie
[student@localhost ~]$ alias

这里写图片描述
这里写图片描述
这里写图片描述

3)删除unalias命令

这里写图片描述

八、利用执行结果设定变量

$?表示命令执行完后的退出值,范围是[0~255];0表示没有错误的输出;

这里写图片描述

<三、测试:用命名表示IP是否存在>

这里写图片描述
这里写图片描述

九、脚本中的函数

脚本中函数是把一个负载的语句块定义成一串字符的方法

[root@localhost ~]# vim file.sh
[root@localhost ~]# sh file.sh
Please input a ipaddress: 172.25.254.111
172.25.254.111 is down
Please input a ipaddress: 172.25.254.129
172.25.254.129 is up
Please input a ipaddress: exit
^C             ##如果不按Ctrl+c不会结束,所以请看以下:
[root@localhost ~]# 

这里写图片描述
这里写图片描述

##加入exit的&&正确的输出【||错误的输出,&与,|或】

这里写图片描述
这里写图片描述

<四、测试:文件类型的脚本>

这里写图片描述
这里写图片描述

<五、测试:利用脚本函数建立删除并设置密码>

这里写图片描述
这里写图片描述
这里写图片描述

猜你喜欢

转载自blog.csdn.net/janenancy/article/details/80764241