bash的变量类别有以下几类,区分好变量类别能让我们更好的理解bash基础:
本地变量(局部变量)
环境变量
特殊变量
位置变量
本地变量(局部变量)
作用域为整个bash进程。仅对当前shell进程有效,对子shell无效。
比较好理解的就是我复制了一个变量,我的子shell并不能够使用到这个变量
环境变量
作用域为当前shell进程及其子进程
查看环境变量的常用命令为:export env
特殊变量
$?:表示引用前一个命令的执行状态的返回值。在流程控制语句中判断条件都是执行状态返回值0为真其他为假
$#:参数的个数。
$*:参数列表,将命令行上提供的所有参数当作一个参数来保存。
$@:命令行参数,将命令行上提供的所有参数当作一个字符串中的多个独立的参数来保存。
位置变量
$1:同下面$2表示类型一样,表示传递一个参数
$2:同上,主要用来实现脚本传参(比如服务启动脚本)
$1,$2....用来引用脚本的参数
变量类型:书写确定数据的存储格式和长度
每个变量进行赋值后,其赋值的内容如果没有变量类型定义的话,可能就会出现内存溢出情况。定义变量类型能更好的让内存进行管理,对变量进行类型区分最重要的还是方便程序判断和运算
bash中变量类型分两类:字符、数值
字符:默认变量的赋值内容都是以字符串的方式存在
数值:
整型:如果按照上面的说明,变量内容都是以字符串方式存在的话,那么数值怎么办呢?可以做变量声明
浮点型:浮点型就是所谓的小数点
布尔型:真(true)、假(false)
变量之间的运算判断
与:&&
或:||
非:!
练习:写一个脚本,完成以下任务
1、添加5个用户,user1....,user5
2、每个用户的密码通用户名,而且要求,添加密码完成后不显示passwd命令的执行结果
3、每个用户添加完成后,都要显示用户某某添加成功
[root@xiangys0134_1 ~]# cat user.sh
#!/bin/bash
for x in user6 user7 user8 user9 user0
do
useradd $x
echo "$x"|passwd --stdin $x &>/dev/null
echo "$x添加成功"
done
练习:写一个脚本,完成以下任务
1、使用一个变量保存一个用户名
2、删除此变量中的用户,且一并删除其家目录
3、显示用户删除完成类的信息
[root@xiangys0134_1 ~]# cat del.sh
#!/bin/bash
for x in user0 user1 user2 user3 user4 user5 user6 user7 user8 user9
do
userdel -r $x
echo "删除${x}成功"
done
本文出自 “常想一二” 博客,谢绝转载!
原文地址:http://250919938.blog.51cto.com/962010/1918030