CentOS之Shell文件编写基础
shell文件以.sh结尾,这是一种习惯而已。第一行以#! /bin/bash开头;表示该文件使用的是bash语法;
如果不设置该行,你的shell脚本也可以执行,但是不符合规范。#表示注释。
# vim first.sh
输入以下内容
#! /bin/bash
date
echo "Hello world!"
退出文件编辑
# sh first.sh 执行脚本
# ./first.sh 提示权限不够
# chmod +x first.sh
# ./first.sh 执行脚本
# sh -x first.sh 查看shell的执行过程,方便调试
date用法
date +%Y:以四位数字格式打印年分
date +%y:二位数展示年分
date +%m :月份
date +%d:日期
date +%H:小时
date +%M:分钟
date +%S:秒
date +%w:星期;0表示周日。
# date +"%Y-%m-%d %H:%M:%S"
# date -d "-1 day" +%d 一天前的日期
# date -d "-1 hour" +%H 一个小时前
# date -d "-1 min" +%M 一分钟前
变量
1)变量名=变量值
2)脚本中的反引号(键盘左上角 波浪线键)是将字符串当成shell命令执行,返回命令的执行结果。
d=`date +%H:%M:%S` 变量
echo "脚本开始时间 $d."
echo "现在休眠2秒"
sleep 2
d1=`date +%H:%M:%S` 变量
echo "脚本结束:$d1."
数学运算
a=1
b=2
sum=$[$a+$b]
echo "$a+$b=$sum"
和用户交互
read -p "请输入一个数字:" x
read -p "请再次输一个数字:" y
sum=$[$x+$y]
echo "这个和是:$sum"
脚本预设变量
文件a.sh,内容如下
sum=$[$1+$2]
echo "sum=$sum"
执行脚本 sh a.sh 1 2
输出结果 sum=3
$1和$2是shell脚本的预设变量。 $0表示脚本本身的名字。
逻辑语句
if
if 判断语句; then
command
fi
编写脚本文件 a.sh
read -p "请输入一个数字:" a
if((a<60)); then
echo "$a 小于60"
fi
退出编辑
if else
if 判断语句; then
command
else
command
fi
新建a.sh,内容如下
read -p "请输入一个数字:" a
if((a<60)); then
echo “小于60”
else
echo "大于60"
fi
退出脚本编辑。
else if
if 判断语句;then
command
elif 判断语句;then
command
else
command
fi
新建sh文件a.sh,脚本如下
read -p "请输入数字:" a
if((a<60));then
echo "小于60";
elif ((a<120)) && ((a>=60)); then
echo "小于120,但是大于60"
else
echo "大于120"
fi
判断大小除了使用(())形式外,还可以使用[ ];但是不能使用>,<,=了;
要使用-lt(小于),-gt(大于),-le(小于等于),-ge(大于等于),-eq(等于),-ne(不等于)。
# a=10; if [$a -lt 5 ];then echo ok; fi
# a=10;if [$a -gt 5];then echo ok; fi
# a=10; if [$a -lt 1] || [$a -gt 5];then echo ok;fi
文档的判断
格式:
if [-参数 filename];then
command
fi
参数:
-e:判断文件或目录是否存在
-d:判断是不是目录以及是否存在。
-f:判断是不是普通文件以及是否存在
-r:判断是否有读的权限
-w:判断是否有写权限
-x:判断是否可执行
示例:
if [ -d /home/];then echo ok;fi 判断home是否是目录以及是否存在。
case 逻辑判断
case 变量 in
value1)
command
;;
value2)
command
;;
*)
command
;;
esac
read -p "输入一个数字:" n
a=$[$n%2]
case $a in
1)
echo "奇数"
;;
2)
echo "偶数"
;;
*)
echo "不是一个数字"
;;
esac
for循环:seq 1 5表示从1 到5的序列。
示例1
for i in `seq 1 5`;do
echo $i
done
示例2 :循环字符和数字的组合
for i in 1 2 3 a b;do echo $i;done
示例3:循环系统命令
for i in `ls`;do echo $i;done
while 循环
while 条件;do
command
done
示例1:
a=5
while [$a -ge 1];do
echo $a
a= $a-1
done
示例2:while死循环,用于监控
while :;do
sleep 3
done
函数
function sum()
{
sum1=$[$1+$2+$3]
echo $sum1
}
sum $1 $2 $3
运行脚本: sh a.sh 1 3 4 结果是8
break或continue(用法相似)
for i in `seq 1 5`
do
echo $i
if [$i==3]
then
break(或者 continue)
fi
echo $i
done
echo aaa
exit退出整个shell脚本
CentOS之Shell文件编写基础的更多相关文章
- shell 脚本编写基础
在进行Linux测试时编写脚本是必不可少的,Shell脚本的名称可以随便定义,也不要什么后缀名,例如可以写abc,smartzip这类名称,运行时只要键入 ./smartzip就能运行脚本了.. 每行 ...
- shell scripts 编写基础
一.shell变量的相关用法: 变量作为被赋值的一方的时候不加$,只有在使用其值的内容的时候需要加上$,该符号可 1,变量中的单引号‘’.双引号“”“.反单引号‵`.括号().大括号{}.双括号(() ...
- linux的基本操作(shell 脚本的基础知识)
shell 脚本的基础知识 日常的linux系统管理工作中必不可少的就是shell脚本,如果不会写shell脚本,那么你就不算一个合格的管理员.目前很多单位在招聘linux系统管理员时,shell脚本 ...
- Shell编程入门基础上
前言 为什么学 Shell Shell 脚本语言是实现 Linux/UNIX 系统管理及自动化运维所必备的重要工具, Linux/UNIX 系统的底层及基础应用软件的核心大都涉及 Shell 脚本的内 ...
- SHELL脚本编程基础知识
SHELL脚本编程基础知识 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Linux之父Linus有一句话很经典:"Talk is cheap, show me the ...
- shell脚本编程基础介绍
Linux系统——shell脚本编程基础介绍 1.什么是shell 它是一个命令解释器,在linux/unix操作系统的最外层,负责直接与用户对话,把用户的输入解释给操作系统,并处理各种操作输出的结果 ...
- liunx shell 脚本的基础知识
Shell脚本编程30分钟入门====================## 什么是Shell脚本### 示例看个例子吧: #!/bin/sh cd ~ mkdir shell_tut cd shell ...
- shell脚本编写笔记
包含转载内容,转载自http://wenku.baidu.com/link?url=jtCHxEYzgGve6P64U3JRQRgU6nhpGvqFLLpWu9I2Htq6hi9TGLudRFkk7r ...
- linux 脚本编写基础(一)
1. Linux 脚本编写基础 1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在 ...
随机推荐
- 普林斯顿数学指南(第二卷) (Timothy Gowers 著)
第IV部分 数学的各个分支 IV.1 代数数 IV.2 解析数论 IV.3 计算数论 IV.4 代数几何 IV.5 算术几何 IV.6 代数拓扑 IV.7 微分拓扑 IV.8 模空间 IV.9 表示理 ...
- js技巧专题篇: 页面跳转
本篇主要介绍网页上常见的页面跳转技术.页面跳转有几种方式,比较常用的是window.location.href,window.location.replace,window.open,当然还有目前比较 ...
- maven的profile
https://elim.iteye.com/blog/1900568 简介:配置不同环境要使用的profile,再idea操作画面可以选
- i++和++i的笔试题
i = ++i + i++ + i++ + i++; 把每个 i++或者++i看作一个部分,他们的分别再下一个 i++或者++i改变,中途赋值的话,就返回这个部分的值 来自:https://www.j ...
- TP5 中引入第三方类库
通过了解tp5的目录结构,我们知道其中有两个目录是纺织扩展类库文件的. extend是放置自定义或者其他类文件的. vendor目录是放置composer类库文件的. 当我们的第三方类库文件是下载的, ...
- C# ASCII与字符串间相互转换 (转)
引言: 最近开始学习C#,在写串口助手小工具时遇到十六进制发送与字符发送之间转换的问题, 小弟通过网络各路大神的帮助下,终于实现正确显示收发,小弟菜鸟一枚,不足之处还望各位批评指正O(∩_∩)O! 其 ...
- ASP.NET AJAX入门系列(11):在多个UpdatePanle中使用Timer控件
本文将使用Timer控件更新两个UpdatePanel控件,Timer控件将放在UpdatePanel控件的外面,并将它配置为UpdatePanel的触发器,翻译自官方文档. 主要内容 在多个Upda ...
- golang 自定义json解析
在实际开发中,经常会遇到需要定制json编解码的情况. 比如,按照指定的格式输出json字符串, 又比如,根据条件决定是否在最后的json字符串中显示或者不显示某些字段. 如果希望自己定义对象的编码和 ...
- c#:$用法
为什么会出现$符号,c#6.0才出现的新特性 var s = string.Fromat("{0}+{1}={2}",12,23,12+23) 用起来必须输入string.From ...
- ML: 降维算法-LDA
判别分析(discriminant analysis)是一种分类技术.它通过一个已知类别的“训练样本”来建立判别准则,并通过预测变量来为未知类别的数据进行分类.判别分析的方法大体上有三类,即Fishe ...