shell编程
编辑器,解释器
编程语言:机器语言、汇编语言、高级语言
静态语言:编译型语言
-通常强类型(变量)
关键字:
事先转换成可执行格式
c\c++\java\
动态语言:解释型语言
-通常弱类型
边解释边执行
php\shell\python\perl
面向对象:java\python\perl\c++
面向过程:shell\c
变量:内存空间,命明
内存:编止的存储单元
进程:
编程能力:脚本编程
本地变量:
VARNAME=Value:整个bash进程
局部变量:
local VARNAME=Value:当前代码段
环境变量:作用域=当前shell进程及其子进程
export VARNAME=Value
撤销变量:
unset VARNAME
查看当前shell中变量
set
查看当前shell中的环境变量
printenv
env
export
追加变量输出
animal=pig
animal=$animal
animal=$animal:sheep
echo $animal
==pig:sheep
export
[root@ip-10-18-6-152 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@ip-10-18-6-152 ~]# export PATH:user/local/apache/bin
-bash: export: `PATH:user/local/apache/bin': not a valid identifier
[root@ip-10-18-6-152 ~]# export PATH=$PATH:user/local/apache/bin
[root@ip-10-18-6-152 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:user/local/apache/bin
[root@ip-10-18-6-152 ~]# export PATH=user/local/apache/bin:$PATH
[root@ip-10-18-6-152 ~]# echo $PATH
user/local/apache/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:user/local/apache/bin
脚本:命令的堆砌,按实际需要,结合命令流程控制
--nano--
#!/bin/bash
#注释,没有意义
cat /etc/fstab
ls /var
chmod +x first.sh [赋予权限]
./first.sh [当前目录执行]
bash first.sh [bash变量执行]
练习:
1.添加5个用户,user1....user5
2.每个用户的密码同用户名,而且要求:添加密码完成后不显示passwd的执行结果;
3.显示“添加成功”
练习2:
1.使用1个变量保存一个用户名
2.删除变量中的用户且一并删除其家目录
3.显示”用户删除完成“
bash中如何实现条件判断?
条件测试类型:
1.整数测试
2.字符测试
3.文件测试
条件测试的表达式:
[ expression ] (前后面有个空格)
[[ expression ]]
test expression
整数比较:
-eq:测试2个整数是否相等:如B
[root@ip-10-18-6-152 ~]# A=8
[root@ip-10-18-6-152 ~]# B=3
[root@ip-10-18-6-152 ~]# [ $A -eq $B ]
[root@ip-10-18-6-152 ~]# echo $?
1
[root@ip-10-18-6-152 ~]# B=8
[root@ip-10-18-6-152 ~]# echo $?
0
-ne:测试2个整数是否不相等:如B
-gt:测试一个数是否>另一个数
-lt:测试一个数是否<另一个数
-ge:大于或者等于
-le:小于或者等于
命令间的逻辑关系:
逻辑与:&&
逻辑或:||
判断某个文件大小是否超过1000000000,是则输出"is a big file",否则输出'is a small file'
#!/bin/bash
LINES=`wc -l /data/logs/data_20220506-073623.log`
echo $LINES
SizeLINES=`echo $LINES |cut -d' ' -f1`
echo $SizeLINES
[ $SizeLINES -gt 1000000000 ] && echo "is a big file" || echo 'is a small file'
单分支if语句:
if 判断条件; then
statement1
statement2
...
fi
双分支if语句:
if 判断条件 ;then
statement1
statement2
else
statement1
statement2
...
fi
练习一:判断2个数相等与否
A=5
B=1
if [ $A -eq $B ]; then
echo "相等"
else
echo "不相等"
fi
练习二:判断1个用户是否存在
USERNAME=user1
USERID=`ID -U $USERNAME`
GROUPID=`id -g $USERNAME`
if [ $USERID -eq $GROUPID ]; then
echo "Good guy"
else
echo "Bad guy"
fi
shell中如何进行算数运算:
1.let 算术运算表达式
let C=$A+$B
$[算术运算表达式]
C=$[$A+$B]
$((算术运算表达式))
C=$(($A+$B))
4.expr 算术运算表达式:表达式中各操作数及运算符之间要有空格,而且使用命令使用
C= `expr $A + $B`