首页 > 系统相关 >Shell语言开发基础模板

Shell语言开发基础模板

时间:2022-08-15 22:35:05浏览次数:51  
标签:语句 Shell 语言 echo 命令 le root 模板 分支

内容概要

  • 基础阶段

    脚本处理/测试
    变量
    操作符
    分支结构之if分支
    分支结构之case分支
    循环结构之while循环
    循环结构之for循环
    函数

脚本处理/测试

#脚本处理
window 回车是 \r\n
linux 回车是 \n
yum install -y dos2unix (软件)
命令:dos2unix 脚本名 -------处理
#脚本测试:
sh -x 与 set -x(开始) set +x(结束)
显示脚本执行过程

变量

1.局部变量:只在一个范围内使用(普通变量)
File=`ls -l /root`
echo ${File}

2.全局变量:在整个linux中适用(环境变量)
echo $PATH
/opt/mysql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin
\#临时添加一个全局变量
export File=`ls -l /root`
检查
env |grep File
\#永久添加一个全局变量
echo 'export File=`ls -l /root' >>/etc/profile && source /etc/profile
命令:(检查)env |grep NAME
File=`ls -l /root

3.特殊变量:位置变量及进程状态变量
$0 脚本的名字
$1 第一个参数
$2 第二个参数
$# 参数的总个数 全部在一起吐出来
$@ 参数的总个数
$? 上一次命令是否执行正确 0(正确) 非0(错误)

操作符

1.文件目录判断操作符

判断/root目录是否存在
(判断) [ -d /root ]

判断/root/oldboy.txt文件是否存在
(判断) [ -f /root/oldboy.txt ]

2.比较大小

[ 1 -eq 1 ] equal ==
[ 2 -ne 1 ] not equal !=
[ 2 -gt 1 ] great than >
[ 2 -ge 1 ] great equal >=
[ 2 -lt 10 ] less than <
[ 2 -le 10 ] less equal <=

3.字符串判断操作符
-z用法(字符串长度为0)真
[ -z "" ]
! [ -z "haha" ]
-n用法(字符串长度非0)真
[ -n "haha" ]
! [ -n "" ]

4.逻辑操作符
-a 与and,两端都为真则真
-o 与or,有一个真则真
!非not,相反则为真

[root@web03 ~]# [ 1 -le 2 -a 2 -gt 1 ] && echo "成立" || echo "不成立"
成立
[root@web03 ~]# [ 1 -le 2 -a 1 -gt 1 ] && echo "成立" || echo "不成立"
不成立
[root@web03 ~]# [ 1 -le 2 -o 1 -gt 1 ] && echo "成立" || echo "不成立"
成立
[root@web03 ~]# [ 1 -le 2 -o ! 1 -gt 1 ] && echo "成立" || echo "不成立"
成立
[root@web03 ~]# [ ! 1 -le 2 -o ! 1 -gt 1 ] && echo "成立" || echo "不成立"
成立

分支结构之if分支

1.单分支语句

if [条件] ;then
命令语句
fi

2.双分支语句

if [条件]
then
命令语句1
else
命令语句2
fi

3.多分支语句

if [条件]
then
命令语句
elif [条件]
then
命令语句
elif [条件]
then
命令语句
else
命令语句2
fi

分支结构之case分支

case $1 in
start)
启动命令


stop)
停止命令


restart)
停止命令
sleep 1
启动命令

*)
echo "USAGE: sh $0 start|stop|restart"

esac

循环结构之while循环

while 条件
do
命令语句
done

例子:(let 计算)
计算1到100的和
i=1
sum=0
while [$i -le 100] ; then
do
let sum=sum+$i
let i++
done
echo $sum

循环结构之for循环

for i in 用于循环的条件
do
条件
done
例:continue(条件满足时退出本次循环,接着执行下一个循环)
\#!/bin/bash
for i in {1..5}
do
if [ $i -eq 3 ] ;then
continue
fi
echo $i
done
echo "ok"

函数

#设置函数
function 函数名 {
命令语句
}
#调用函数
函数名

例子:
function checkZabbix {
Zabbixcheck=`cat /etc/passwd |grep zabbix |wc -l`
if [ "$Zabbixcheck" -eq 1 ];then
if [ -f "$scriptsfile" ];then
sh "$scriptsfile"
return 0
else
echo "ScriptsFile Inexistence"
return 1
fi
fi
}

checkZabbix
 

标签:语句,Shell,语言,echo,命令,le,root,模板,分支
From: https://www.cnblogs.com/A121/p/16589884.html

相关文章

  • Python调用函数模板
    内容概要函数阶段语法结构定义调用返回值参数名称空间闭包函数装饰器(难点)递归函数、二分法、匿名函数、三元表达式、列表生成式迭代器、生成器常见内置函数函数......
  • XShell7和Xftp免费下载,亲测可用
    作为一个后端开发,我相信会经常和服务器打交道,我们需要连接服务器,查看服务状态,查看日志,还需要向服务器上传jar包等等,那么就很需要一款好用的服务器连接工具了。笔者工作这......
  • C-Primer-Plus-第一章-初识C语言
    第一章初识C语言参考书籍:CPrimerPlus(第6版)中文版一、前言打算跟着本书系统地学习一遍C语言,谨以此系列文章记录自己的学习之路。二、主要内容1.C语言起源1972年......
  • 《x86汇编语言 从实模式到保护模式》第9章 RTC时间更新过快解决方法
    将这两项设置成我这个,保存一下,以便日后使用。 ......
  • linux通过xshell远程登录失败
    状态描述:确认ssh配置完好,重启后查看日志也正常。openssh版本8.5。通过xshell远程连接,提示服务器拒绝连接。处理过程:由于是虚拟机,之前通过vnc连接的一个终端还未关闭。修......
  • xdocrepor读取resource目录下的word模板报:fr.opensagres.xdocreport.core.XDocReportE
    使用xdocrepor导出的时候模板在服务器读取指定路径是没问题的,但是我想放入自己项目resource目录中,总是报格式不支持错误!  模板是放入项目中,编辑的时候会破坏模板结构,......
  • java实现word模板导出
    Xdocreport和Freemaker生成docx只使用freemaker生成简单的word文档很容易,但是当word文档需要插入动态图片,带循环数据,且含有富文本时解决起来相对比较复杂,但是使用Xdocrepo......
  • 开机自启rc.local文件模板
    #Ubuntu没有开机自启文件,可以在/etc/目录下面创建一个rc.local文件,并且给他一个可执行权限就行了#rc.local文件格式如下:#!/bin/sh-e#rc.local##Thisscriptisexecut......
  • shell重复执行命令直到成功
    在我们从dockerhub或github上下载的时候,经常会碰到超时的问题,一般就是多尝试下载几次就可以了,但手动重复执行很麻烦,下面是自动检测若未成功执行就自动再次执行命令的代码:w......
  • SecureCRT 和 Xshell 连接ENSP 教程
    前言:很多人问我说想尝试使用CRT和Xshell连接ENSP的某台设备,以模拟现网中的工作状态,所以出了这篇随笔。ENSP版本:  Xshell连接教程Xshell7评估版(其他版本没测试......