Linux系统中的Shell是一个特殊的应用程序,它介于操作系统内核与用户之间,充当了一个“命令解释器”的角色,负责接收用户输入的操作命令并进行解释,将需要执行的操作传递给内核执行,并输出结果。
Shell脚本,就是将平时使用的命令按顺序保存到一个文本文件,然后添加可执行权限,这个文件就成为一个Shell脚本了。
运行脚本的方式:(一共4种)
定义变量的基本格式为“变量名=变量值”,等号两边没有空格。变量名须以字母或下划线开头,变量名中可以包含数字,但不能包含特殊字符(如+ - * . / ? % & #等等)。备注:变量值可以包含特殊字符
查看和引用变量的值:
当变量名容易和紧跟其后的其他字符相混淆时,需要添加大括号{}将其围起来:
变量赋值的特殊操作:
1.双引号,主要起一个界定字符串的作用,如要赋值的内容中包含空格时
在双引号范围内,使用“$”符号可以引用其他变量的值,从而能够直接调用现有变量的值来赋值给新的变量
2.单引号,当要赋值的内容中包含特殊字符时,就应该用单引号围起来;在单引号范围内,将无法引用其他变量的值,任何字符均作为普通字符看待
3.反撇号,主要用于命令替换,允许将执行某个命令的屏幕输出结果赋值给变量
4. $(),可以替代反撇号
5.read命令 (用户的输入数据,会赋值给变量name)
局部变量:新定义的变量只在当前的Shell环境中有效,当进入子程序或新的子Shell环境时,局部变量将会被清空。
全局变量:用户自定义的变量在所有子Shell环境中都可以使用的
使用su切换用户,对全局变量没有影响
使用su - 切换用户,全局变量将会被清空
备注:重启服务器后,所有自定义的变量都会被清空的。
环境变量:(截图有省略)
位置变量:(变量值按照顺序从左到右,由用户手动输入)注意,下面脚本里的echo那行必须使用双引号!!
预定义变量:(位置变量就是位置参数)
$# :表示位置参数的数量
$* :表示所有位置参数的内容
$? :表示前一条命令执行后的返回状态,只有返回值为0,才表示执行正确
$0 :表示当前执行的脚本的名称
例子:注意,下面脚本里的echo必须使用双引号!!
[root@localhost ~]# vi mybackup.sh
#!/bin/bash
file=backup-`date +%Y%m%d_%H%M%S`.tar.gz
tar -czvf $file $* &> /dev/null
echo "已经执行名为$0的脚本"
echo "共完成$#个对象的备份"
echo "具体内容包括: $*"
手动运行脚本,对Python-3.6.4.tgz、tt.sh 进行打包压缩
############################################
############################################
文件测试:
例子一:
例子二:
例子三:
整数值比较:
例子,当前已经登录的用户数小于3时,输出 ok
字符串的比较:
= 等于
!= 不等于
-z 检查字符串是否为空,未定义或赋予空值的变量都被视为空的字符串
例子一, 查看当前的语言环境
例子二,检测指定的文本是否为空
逻辑测试:
&& 逻辑与,表示“而且”的意思,只有当前后的条件都成立时,返回值才为0
|| 逻辑或,表示“或者”的意思,前后条件有一个成立,返回值就为0
! 逻辑否,表示“不”的意思,只有当指定条件不成立时,返回值才为0
例子一,逻辑与
如果当前Linux系统的内核版本大于2.4,就提示“符合要求”
one=$(uname -r |awk -F. '{print $1}')
two=$(uname -r |awk -F. '{print $2}')
[ $one -eq 2 ] && [ $two -gt 4 ] && echo "符合要求"
例子二,逻辑或
例子三,逻辑否
相关文章:
Linux常用命令(二)
Rsync远程同步目录树
Linux客户端使用lftp命令连接FTP服务端
使用Shell脚本监控本机的服务运行状态
本地备份站点目录和数据库+crontab计划任务
远程备份站点目录和数据库+at一次性计划任务
#################################
#################################
亲,学习研究也要劳逸结合哦,来我微店逛逛,买点东西好好犒劳犒劳自己和家人吧^_^^_^
苏泊尔电压力锅家用智能5L高压饭煲特价
苏泊尔电磁炉火锅家用智能正品学生电池炉灶特价炒菜
苏泊尔电蒸锅多功能家用蒸气锅三层大容量电蒸笼蒸锅蒸菜自动断电
|