首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
系统相关
> 详细
shell编程笔记一
时间:
2015-04-28 18:29:52
阅读:
167
评论:
0
收藏:
0
[点我收藏+]
标签:
编程
shell
局部变量
bash
脚本
shell编程:
bash变量类型:
环境变量
本地变量(局部变量)
位置变量
特殊变量(内置)
本地变量:
varname=value:作用域为整个bash进程可以使用;
变量命名规范:
1. 只能含字母、数字和下划线,并且以字母和下划线开头
2. 最好不要跟系统已有的环境变量重名
3. 见名知意
局部变量:
local varname=value:作用域为当前代码段;
环境变量:作用域为当前shell进程及其子进程,不能影响到其父进程;
export varname=value “导出”,如果变量已经定义可以只是用变量名 export varname,即
1. export varname=value
2. varname=value
export varname
脚本在执行命令时会启动一个子shell环境变量:
系统自动执行的脚本(非命令行启动)就需要自我定义需要的个环境变量;
位置变量:
$1,$2,$3,……
特殊变量:
$?:上一个命令执行状态的返回值:
程序执行可能有两种返回值:
1. 程序执行结果
2. 程序状态返回吗(0-255)
0 则为执行正确
1-255 则执行出错(1,2,127系统预留);
bash:
引用变量:${varname},括号可以省略
撤销变量:
unset varname
查看当前shell中的变量:
set
包括环境变量和本地变量
查看当前shell中的环境变量:
1. printenv
2. env
3. export
条件判断:
如果用户不存在:
添加用户,给密码并显示添加成功;
否则
显示用户已经存在,没有添加;
bash中条件判断:
条件测试类型:
1. 整数测试
2. 字符测试
3. 文件测试
条件测试的表达式:
1. [ expression ]
2. [[ expression ]]
3. test expression
整数比较:
-eq:测试两个整数是否相等;比如 $A -eq $B,如果A与B变量的值相等,则返回0,否则返回非0值
-ne:测试两个整数是否不等;相等为假,不等为真
-gt: 测试一个数是否大于另一个数;大于为真,否则为假
-lt: 测试一个数是否小于零一个数;小于为真,否则为假
-ge:测试一个数是否大于或等于另一个数;大于或等于为真,否则为假
-le: 测试一个数是否小于或等于另一个数;小于或等于为真,否则为假
命令间的逻辑关系:
逻辑与:&&
第一个条件为假时,第二个条件不会被执行
第一个条件为真时,第二个条件会被执行,作为结果
逻辑或:||
第一个条件为真时,第二个条件不会执行,结果为真
第一个条件为假时,第二个条件会被执行,作为结果
1.单分支的if语句:
if 判断条件; then
statement1
statement2
……
fi
2. 双分支的if语句:
if 条件判断; then
statement1
statement2
……
else
statement1
statement2
……
fi
如果then与if不在同一行,则“;”可以省略,如果在同一行,则不可省略。fi必须独占一行
如果用户存在,就显示用户已存在;否则,就添加此用户
id user1 && echo "user1 exist" || useradd user1
如果用户不存在,就添加;否则显示其已经存在
! id user1 && useradd user1 || echo "user1 exists."
如果用户不存在,就添加并设置密码,否则,显示其已经存在:
! id user1 && useradd user1 && echo "user1" | passwd --stdin user1 || echo "user1 exists."
shell脚本练习:
练习一要求:
1. 添加5个用户,user1, user2, ……, user5;
2. 每个用户的密码同用户名,且要求,添加密码完成后不显示passwd命令的执行结果信息;
3. 最后显示当前系统上一共有多少个用户;
#useradd user1
#echo "user1" | passwd --stdin user1 &> /dev/null
#echo "Add user1 successfully."
! id user1 &> /dev/null && useradd user1 && echo "user1" | passwd --stdin user1 &> /dev/null || echo "user1 exists."
! id user2 &> /dev/null && useradd user2 && echo "user1" | passwd --stdin user2 &> /dev/null || echo "user2 exists."
! id user3 &> /dev/null && useradd user3 && echo "user1" | passwd --stdin user3 &> /dev/null || echo "user3 exists."
! id user4 &> /dev/null && useradd user4 && echo "user1" | passwd --stdin user4 &> /dev/null || echo "user4 exists."
! id user5 &> /dev/null && useradd user5 && echo "user1" | passwd --stdin user5 &> /dev/null || echo "user5 exists."
USERS=`wc -l /etc/passwd | cut -d: -f1`
echo "$USERS users"
练习二要求:
给定一个用户,如果其UID为0,就显示此为管理员用户;否则,就显示其为普通用户;
NAME=user1
USERID=`id -u $NAME`
[ $USERID -eq 0 ] && echo "root" || echo "common user."
算数运算:
A=4
B=4
1. let 算数运算表达式
let C=$A+$B
2. $[算数运算表达式]
C=$[$A+$B]
3. $((算术运算表达式))
C=$(($A+$B))
4. expr 算数运算表达式,表达式中各操作数及运算符之间要有空格,而且要使用命令引用
C=`expr $A + $B`
shell编程笔记一
标签:
编程
shell
局部变量
bash
脚本
原文地址:http://blog.csdn.net/ucan23/article/details/45338575
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
gitlab 在linux安装环境下存储地址
2021-07-29
当 Mac 未检测到外部显示器时如何修复它
2021-07-29
Ubuntu18.04安装qemu遇到问题-qemu : Depends: qemu-system (>= 1:2.11+dfsg-1ubuntu7)
2021-07-28
[Linux]Shell编程【待续】
2021-07-28
Linux系统资源查看
2021-07-27
Archlinux爬坑指南
2021-07-27
[Linux]Linux发展历程
2021-07-27
非桌面系统 (ubuntu)安装google-chrome
2021-07-27
在Ubuntu18.04系统中源码安装 gcc7.3.0
2021-07-23
Linux快捷键杂记
2021-07-22
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!