Linux--变量

变量的定义

  1. 变量即在程序运行过程中它的值是允许改变的量
  2. 变量是用一串固定的字符来标识不固定的值得一种方法
  3. 变量是一种使用方便的占位符,用于引用计算机内存地址,该地址可以存储 Script 运行时可更改的程序信息
  4. 在 Shell 中变量是不能永久保存在系统中的,必须在文件中声明

变量的种类–在 Shell 脚本中

  1. 在 Shell 中变量分为环境级变量、用户级变量、系统级变量
  2. 环境级变量只在当前 Shell 中生效, Shell 关闭变量丢失
  3. 用户级变量写在用户的 .bash_profile 配置文件中,只针对当前用户生效
  4. 系统级变量写在系统的 /etc/profile 或者 /etc/profile.d 中,对于所有用户都生效

export

临时全局系统变量

export a=1

echo $a

1
在这里插入图片描述

不声明临时全局系统变量

b=1

echo $b

在这里插入图片描述

切换用户测试

1、 su student

echo $a
1
echo $b
无输出
在这里插入图片描述

2、 su - student

echo $a

echo $b

两次都无输出

在这里插入图片描述

系统级全局变量配置

vim /etc/profile
编辑配置文件
cat /etc/profile | tail -n | head -n 1
a=1
添加 a=1
source /etc/profile
立即生效
echo $a

1
有输出

在这里插入图片描述

切换用户测试

1、su student

echo $a
1
有输出
在这里插入图片描述

2、 su - student

echo $a
1

在这里插入图片描述

用户级环境变量

只针对当前用户生效,切换用户即失效

vim ~/.bash_profile

cat ~/.bash_profile | tail -n 3 | head -n 1

PATH=$PATH:$HOME/bin:/mnt
添加 /mnt ,使 /mnt下面的文件修改为全局文件
source ~/.bash_profile

a=1
设置变量

在这里插入图片描述

vim /mnt/test_a.sh
cat /mnt/test_a.sh | tail -n 1
echo $a
sh test_a.sh
1
正常情况下,未设置用户级环境变量,脚本只能在当前目录下执行
设置用户级环境变量后,可以在任何路径执行自定义文件

在这里插入图片描述

变量名称的规范

变量名称中通常包含大小写字母、数字、下划线(不是必须)

变量名称格式

TEST_LINUX

Test_Linux

tesT_Linux

在这里插入图片描述

字符的转译及变量的声明

\ 转译单个字符

““ 弱引用,批量转译 ”“ 中出现的字符或字符串

‘‘ 强引用,批量转译 ‘’ 中出现的字符或字符串

‘‘ 与 “” 两者的区别在于, “” 不能转译 “”、"`"、"!"、"$"

${} 变量声明

使用变量,输出 *

a=*

echo $a

输出当前目录下全部文件

在这里插入图片描述

a=\*

添加转译符

echo $a

输出当前目录下全部文件(转译符未生效)

在这里插入图片描述

echo '$a'

使用强引用符

输出为 $a

echo "$a"

使用弱引用符

输出为 *

在这里插入图片描述

直接显示 * 号

echo *

输出当前目录下全部文件

在这里插入图片描述

echo \*

使用转译符

输出 *

在这里插入图片描述

echo ""
echo '

在这里插入图片描述

直接显示 !

echo "!"

echo '!'

在这里插入图片描述

直接显示 ?

echo "?"

echo '?'

在这里插入图片描述

直接显示 \

echo "\"

echo '\'

在这里插入图片描述

echo \

echo \\

echo "\\"

echo '\\'

在这里插入图片描述

实验

1、自动创建用户脚本

vim /mnt/create_users.sh

在这里插入图片描述

vim /mnt /userfile

cat /mnt/userfile

user1

user2

user3
在这里插入图片描述

cat /mnt/create_users.sh

脚本思路

首先判断使用者身份是否 root 用户(只有 root 用户才能创建用户)

身份正确,再判断是否使用所要生成用户名的文件

身份错误,提示使用 root 身份

身份正确,但没有或者使用错误用户名文件,提示使用正确用户名文件

两者判断正确,开始创建用户

在创建过程中,发现用户已存在,提示用户已存在

在这里插入图片描述

测试脚本

sh create_users.sh

未使用用户名文件,报错,提示使用用户名文件

sh create_users.sh 12

报错,12 文件不存在

sh create_users.sh /mnt/userfile

正确,提示已创建所需要的用户

在这里插入图片描述

sh create_users.sh /mnt/userfile

再次创建,提示已存在用户

在这里插入图片描述

userdel user1

userdel user2

userdel user3

删除刚创建的用户

useradd user2

sh create_users.sh /mnt/userfile

提示 user1 建立

提示 user2 已存在

提示 user3 建立

在这里插入图片描述

使用 student 身份 执行脚本

提示错误

在这里插入图片描述

2、创建、删除系统用户脚本

vim userctrl.sh

脚本思路

首先判断 “-c” 创建 、 “-d” 删除

如果不是 “-c” 或 “-d” 命令时,报错,提示只有 “-c” 或 “-d” 两个命令

当使用 “-c” 命令时,弹出对话框输入用户名,再次弹出对话框输入用户密码

当用户存在时,提示用户已存在

当用户创建完成时,提示用户已创建

当用户密码创建成功时,提示用户密码已生成并退出脚本

当使用 “-d” 命令时,弹出对话框,输入用户名,删除用户,当用户删除后,提示用户已删除

如果所输入的用户名不在系统用户内,报错,提示输入系统用户

在这里插入图片描述

在这里插入图片描述

脚本测试

sh userctrl.sh

脚本后面没有跟命令,报错,提示-d 或 -c 命令

在这里插入图片描述

sh userctrl.sh -c

创建用户

leon

用户名

密码

提示创建完成

在这里插入图片描述

su - leon

exit

在这里插入图片描述

sh userctrl.sh -d

leon

删除用户

提示已删除

在这里插入图片描述

id leon

在这里插入图片描述

别名设置

命令别名就是为一条命令定义一个命令名,执行这个新的命令名就相当于执行这条命令

创建临时别名

alias look='cat'

定义临时别名

alisa
查看别名
在这里插入图片描述

cat -n test1

look -n test1
别名定义成功

在这里插入图片描述

unalias look

删除 临时别名

在这里插入图片描述

创建用户级别名

vim /root/.bashrc

编辑 /root/.bashrc 配置文件

添加 alias look='cat'

source /root/.bashrc

立刻生效

cat -n test1

look -n test1

在这里插入图片描述

系统级全局别名

vim /etc/bashrc

source /etc/bashrc

su - student

切换用户

look -n f1

别名生效

在这里插入图片描述

alias look='cat'

在这里插入图片描述

命令执行结果设定变量

Hostname=$(hostname)

在这里插入图片描述

Hostname=hostname

在这里插入图片描述

$?

命令执行完成后产生的退出值(范围是[0-255])

当$0=0时表示命令执行没有错误输出

在这里插入图片描述

这个值可以用 exit 设置

例如:exit 111

在这里插入图片描述

cat test.sh | tail -n 2

在这里插入图片描述

Shell 脚本中的函数

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

实验

1、测试所有 ping 网络可达的主机,并导入/host_ip 文件内

vim ceshiping.sh

脚本思路

判定文件是否存在

没有存在,生成文件

已存在,提示 重新写入 、备份 、 略过 三个基本功能

弹出对话框,输入所需要功能

重新写入–覆盖原文件并生成新文件

备份–删除原文件并生成新备份文件

略过–跳过,什么都不做

在这里还需要注意大小写,无论大写还是小写命令都应生效

最后测试 广播域内的 ip 是否开启并导入文件内

vim ceshiping.sh

在这里插入图片描述

sh -x ceshiping.sh

先判断没有 /host_ip 文件

再创建文件并导入广播域内网络可达 ip

在这里插入图片描述

sh ceshiping.sh

文件已存在

小写 o 可使用

大写 o 可使用

o–重新写入文件

在这里插入图片描述

cat /host_ip

在这里插入图片描述

sh ceshiping.sh

文件已存在

b–备份

cat /host_ip.bak

在这里插入图片描述

sh ceshiping.sh

文件已存在

s–略过,什么都不做

在这里插入图片描述

2、创建用户及用户密码

脚本思路

当用户存在,提示用户存在

当用户不存在,创建用户及用户密码

退出

vim create_user.sh

在这里插入图片描述

sh create_user.sh

输入用户名

输入用户密码

创建成功

exit

退出

在这里插入图片描述

For 循环

For

do

done

for x in a b c
循环条件
do
开启
echo $x
执行命令
done
完成
字符 a、b、c 依次输出

在这里插入图片描述

for x in seq 1 2 10

do

echo $x

done

seq 1 2 10
设置步长

在这里插入图片描述

for x in {1..10}
do
echo $x
done
在这里插入图片描述

for x in {10..1}
do
echo $x
done
在这里插入图片描述

for x in {a..f}
do
echo $x
done

在这里插入图片描述

实验

1、倒计时

vim daojishi.sh

脚本思路

首先使用循环命令

倒数计数:一秒一显示

在这里插入图片描述

sh daojishu.sh

在这里插入图片描述

倒计时在一行显示,echo -n

在这里插入图片描述

在这里插入图片描述

While 循环

while

do

done

sh true.sh

首先判断退出

其次使用 while true 写一个死循环

最后使用 exit 退出

在这里插入图片描述

sh true.sh

leon

leo

zhang

exit

该脚本是一个死循环脚本,没有判断 退出 ,无限循环

在这里插入图片描述

Until 循环

until

do

done

sh until.sh

首先判断退出

其次使用 until false 写一个死循环

最后使用 exit 退出
在这里插入图片描述

sh until.sh

gg

asd

exit

该脚本是一个死循环脚本,没有判断 退出 ,无限循环

在这里插入图片描述

分钟:秒钟–倒计时

vim daojishu1.sh

脚本思路

当秒钟从10开始,走到0时,分钟由1变为0

当分钟变为0时,秒钟从59开始,走到0结束

在这里插入图片描述

sh daojishu1.sh

分钟1

秒钟6

在这里插入图片描述

分钟0

秒钟57

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>