2022-05-07_Linux:bash脚本编程之-变量、变量类型等

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


first.sh.png

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个整数是否相等:如A -eqB

[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个整数是否不相等:如A -neB
-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

  1. $[算术运算表达式]
    C=$[$A+$B]

  2. $((算术运算表达式))
    C=$(($A+$B))

4.expr 算术运算表达式:表达式中各操作数及运算符之间要有空格,而且使用命令使用
C= `expr $A + $B`

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容