bash脚本编程之一变量、变量类型:
1、bash变量类型:
环境变量
本地变量
位置变量
特殊变量
备注:强变量:内部变量不做转换,‘’;弱变量:内部变量进行转换,“”;
(1)本地变量:
bash:
set VARNAME=VALUE:作用于整个bash进程
(2)局部变量:local VARNAME=VALUE:作用域为当前代码段;
(3)环境变量:作用域为当前shell进程及其子进程;
export VARNAME=VALUE #"导出变量"
备注:脚本在执行时会启动一个子shell进程:
命令行中启动的脚本会继承当前shell环境变量;
系统自动执行的脚本(非命令行启动)就需要自我定义需要各环境变量;
(4)位置变量:引用脚本参数
(5)特殊变量:
$?:上一个命令的执行状态返回值;
程序状态返回代码(0-255)
0:正确执行
1-255:错误执行,1,2,127系统预留;
2、输出重定向:
>:正确覆盖重定向
>>:正确追加重定向
2>:错误重定向
2>>:错误追加重定向
&>:从定向
输出重定向位置:/dev/null(软件模拟设备)
3、撤销变量:
unset VARNAME
4、查看当前shell中的变量:
set:
5、查看当前shell中的环境变量:
printenv或env或export
6、给当前变量赋值:
例:[root@Ourlab ~]# ANIMAL=pig
[root@Ourlab ~]# ANIMAL=$ANIMAL:goat
[root@Ourlab ~]# echo $ANIMAL
pig:goat
7、引用变量:${VARNAME},括号有时可省略。
例:[root@Ourlab ~]# ANIMAL=pig
[root@Ourlab ~]# echo "There are some ${ANIMAL}s."
There are some pigs.
8、脚本:命令的堆砌,按实际需要,结合命令流程控制机制实现的源程序
shebang:魔数(#!/bin/bash)
#:注释行,不执行
课后练习:
练习一:写一个脚本,完成以下任务:
1、添加5个用户,user1,....,user5;
2、每个用户的密码同用户名,而要求,添加密码完成后不显示passwd命令的执行结果信息;
3、每个用户添加完成后,都要显示用户某某已经成功添加;
#!/bin/bash
! id user1 &> /dev/null && useradd user1 && echo "user1" | passwd --stdin user1 &>/dev/null || echo "user1 exists."
! id user2 &> /dev/null && useradd user2 && echo "user2" | passwd --stdin user2 &>/dev/null || echo "user2 exists."
! id user3 &> /dev/null && useradd user3 && echo "user3" | passwd --stdin user3 &>/dev/null || echo "user3 exists."
USERS=`wc -l /etc/passwd | cut -d: -f1`
echo "$USERS users"
练习二:写一个脚本,完成以下任务:
1、使用一个变量保存一个用户名;
2、删除此变量中的用户,且一并删除其家目录;
3、显示”用户删除完成“类的信息;
#!/bin/bash
#
NAME=user17
userdel -r $NAME
echo "user17 already deleted."
阅读(734) | 评论(0) | 转发(0) |