笔记:shell编程 变量 分支 关系运算[马哥linux ]
来源:互联网 发布:淘宝助手有什么用处 编辑:程序博客网 时间:2024/05/21 10:05
shell编程:
编译器,解释器
编程语言:机器语言、汇编语言、高级语言
静态语言:编译型语言
强类型(变量)
事先转换成可执行格式
C、C++、JAVA、C#
动态语言:解释型语言, on the fly
弱类型
边解释边执行
PHP、SHELL、python、perl
面向过程:Shell, C
面向对象: JAVA, Python, perl, C++
变量:内存空间,命名
内存:编址的存储单元
进程:
1+100:
1+1000000
1
变量类型:事先确定数据的存储格式和长度
字符
数值
整型
浮点型: 11.23, 1.123*10^1, 0.1123*10^2
2013/10/10, 64bit
99999: 24bit,
真、假
逻辑:1+1>2
逻辑运算:与、或、非、异或
1: 真
0: 假
1 & 0 = 0
0 & 1 = 0
0 & 0 = 0
1 & 1 = 1
或:
非:
! 真 = 假
! 假 = 真
shell: 弱类型编程语言
强:变量在使用前,必须事先声明,甚至还需要初始化;
弱:变量用时声明,甚至不区分类型;
变量赋值:VAR_NAME=VALUE
bash变量类型:
环境变量
本地变量(局部变量)
位置变量
特殊变量
本地变量:
set VARNAME=VALUE: 作用域为整个bash进程;
局部变量:
local VARNAME=VALUE:作用域为当前代码段;
环境变量:作用域为当前shell进程及其子进程;
export VARNAME=VALUE
VARNAME=VALUE
export VARNAME
“导出”
位置变量:
$1, $2, ...
特殊变量:
$?: 上一个命令的执行状态返回值;
程序执行,可能有两类返回值:
程序执行结果
程序状态返回代码(0-255)
0: 正确执行
1-255:错误执行,1,2,127系统预留;
输出重定向:
>
>>
2>
2>>
&>
撤消变量:
unset VARNAME
查看当shell中变量:
set
查看当前shell中的环境变量:
printenv
env
export
脚本:命令的堆砌,按实际需要,结合命令流程控制机制实现的源程序
shebang: 魔数
#!/bin/bash
# 注释行,不执行
/dev/null: 软件设备, bit bucket,数据黑洞
脚本在执行时会启动一个子shell进程;
命令行中启动的脚本会继承当前shell环境变量;
系统自动执行的脚本(非命令行启动)就需要自我定义需要各环境变量;
练习:写一个脚本,完成以下任务
1、添加5个用户, user1,..., user5
2、每个用户的密码同用户名,而且要求,添加密码完成后不显示passwd命令的执行结果信息;
3、每个用户添加完成后,都要显示用户某某已经成功添加;
useradd user1
echo "user1" | passwd --stdin user1 &> /dev/null
echo "Add user1 successfully."
条件判断:
如果用户不存在
添加用户,给密码并显示添加成功;
否则
显示如果已经没在,没有添加;
bash中如何实现条件判断?
条件测试类型:
整数测试
字符测试
文件测试
条件测试的表达式:
[ expression ]
[[ expression ]]
test expression
整数比较:
-eq: 测试两个整数是否相等;比如 $A -eq $B
-ne: 测试两个整数是否不等;不等,为真;相等,为假;
-gt: 测试一个数是否大于另一个数;大于,为真;否则,为假;
-lt: 测试一个数是否小于另一个数;小于,为真;否则,为假;
-ge: 大于或等于
-le:小于或等于
命令的间逻辑关系:
逻辑与: &&
第一个条件为假时,第二条件不用再判断,最终结果已经有;
第一个条件为真时,第二条件必须得判断;
逻辑或: ||
如果用户user6不存在,就添加用户user6
! id user6 && useradd user6
id user6 || useradd user6
如果/etc/inittab文件的行数大于100,就显示好大的文件;
[ `wc -l /etc/inittab | cut -d' ' -f1` -gt 100 ] && echo "Large file."
变量名称:
1、只能包含字母、数字和下划线,并且不能数字开头;
2、不应该跟系统中已有的环境变量重名;
3、最好做到见名知义;
如果用户存在,就显示用户已存在;否则,就添加此用户;
id user1 && echo "user1 exists." || useradd user1
如果用户不存在,就添加;否则,显示其已经存在;
! id user1 && useradd user1 || echo "user1 exists."
如果用户不存在,添加并且给密码;否则,显示其已经存在;
! id user1 && useradd user1 && echo "user1" | passwd --stdin user1 || echo "user1 exists."
练习,写一个脚本,完成以下要求:
1、添加3个用户user1, user2, user3;但要先判断用户是否存在,不存在而后再添加;
2、添加完成后,显示一共添加了几个用户;当然,不能包括因为事先存在而没有添加的;
3、最后显示当前系统上共有多少个用户;
练习,写一个脚本,完成以下要求:
给定一个用户:
1、如果其UID为0,就显示此为管理员;
2、否则,就显示其为普通用户;
如果 UID为0;那么
显示为管理员
否则
显示为普通用户
NAME=user16
USERID=`id -u $NAME`
if [ $USERID -eq 0 ]; then
echo "Admin"
else
echo "common user."
fi
NAME=user16
if [ `id -u $NAME` -eq 0 ]; then
echo "Admin"
else
echo "common user."
fi
2 0
- 笔记:shell编程 变量 分支 关系运算[马哥linux ]
- Linux Shell变量和运算符笔记
- SHELL编程-运算关系比较
- linux 下shell 编程之变量及数学运算
- linux shell 编程笔记 - shell脚本之变量
- linux shell 初学 变量 循环 分支
- Linux shell 变量 数学 运算
- Linux shell 变量 数学 运算
- Linux shell变量数学运算
- Linux shell--变量数学运算
- Linux shell 变量 数学 运算
- Linux shell 变量 数学 运算
- Linux shell 变量 数学 运算
- Linux--Shell 编程-bash,命令替换,if分支嵌套,运算,输入输出
- Linux--Shell 编程-bash,命令替换,if分支嵌套,运算,输入输出
- linux shell 笔记---变量
- linux shell 算数运算.关系运算.布尔运算,字符串运算
- Linux Shell 脚本编程(2)—变量(本地变量&环境变量)和运算符
- android中的animation动画左右摇摆晃动
- Ubuntu14.04 64 位系统 安装 Cuda 6.5
- IOS 动画之加载图片
- 深入设计模式-4.建造者模式
- xCode6制作动态及静态Framework
- 笔记:shell编程 变量 分支 关系运算[马哥linux ]
- android开源控件
- ORA-03113: end-of-file on communication channel解决方法
- Ext.form.CheckboxGroup和Ext.form.RadioGroup组件示例
- 【css--Form】字体为12px时表单中(radio,checkbox)与文字对齐
- P2P平台架构基于组件化架构设计
- DOM编程
- Linux内核哈希表分析与应用 -- Linux内核
- 利用树莓派控制步进电机——Python语言