美文网首页
shell脚本的一些常用命令简介

shell脚本的一些常用命令简介

作者: 后端架构进阶 | 来源:发表于2019-12-24 11:39 被阅读0次

一、前言

什么是shell脚本
Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。所以,shell脚本就是预先编写好用来操作linux的一种脚本语言。

二、基本规范和字符

1. 常见规范约束

  • shell一般以*.sh结束
  • shell的编写一般以#!/bin/sh或者是#!bin/bash开头,第一行就是这个
    image.png

2. 变量的命名规范

  • 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
  • 中间不能有空格,可以使用下划线(_)。
  • 不能使用标点符号。
  • 不能使用bash里的关键字(可用help命令查看保留关键字)。

3. 变量的定义和使用

#!/bin/sh

demoName="test"

echo $demoName

echo "我是测试的 ${demoName}1 "

echo "我是测试的 $demoName1"

注意:=前后不要有空格。

使用直接用美元符号$即可,为了更直观的看出,强烈建议使用${},便于区分变量和参数,这是一直很好的编程习惯。下面的结果就很直观的看得出来。
输出结果:

test
我是测试的 test1 
我是测试的

4. 字符串拼接

#!/bin/sh

demoName="test"

str='hello, '${demoName}''
echo $str

输出: hello, test

5. 字符串长度

#!/bin/sh

demoName="test"

echo ${#demoName}

输出: 4

6. 截取字符串

#!/bin/sh

demoName="test"

echo ${demoName:1:2}

输出:es

7. 查找字符出现的位置(哪个字母先出现就计算哪个)

#!/bin/sh

demoName="test"
echo `expr index ${demoName} se`

输出结果:2

8.注释

以 # 开头的行就是注释,会被解释器忽略。

#--------------------------------------------
# 这是一个注释
# author: yxb
# site:www.baidu.com
#--------------------------------------------

三、运算符

1. 算数运算符

假设a10 b=20

符号 说明 举例
+ 加号 expr $a + $b 结果为 30。
- 减号 expr $a - $b 结果为 -10。
* expr $a \* $b 结果为 200。
/ expr $b / $a 结果为 2。
% 取余 expr $b % $a 结果为 0。
= 赋值 a=$b 将把变量 b 的值赋给 a。
== 等于 [ a ==b ] 返回 false。
!= 不等于 [ a !=b ] 返回 true。
#!/bin/sh
a=10
b=20

val=`expr $a + $b`
echo "a + b : $val"

val=`expr $a - $b`
echo "a - b : $val"

val=`expr $a \* $b`
echo "a * b : $val"

val=`expr $b / $a`
echo "b / a : $val"

val=`expr $b % $a`
echo "b % a : $val"

if [ $a == $b ]
then
   echo "a 等于 b"
fi
if [ $a != $b ]
then
   echo "a 不等于 b"
fi

2. 关系运算符

假设a10 b=20

符号 说明 举例
-eq 检测两个数是否相等,相等返回 true。 [ a -eqb ] 返回 false。
-ne 检测两个数是否不相等,不相等返回 true。 [ a -neb ] 返回 true。
-gt 检测左边的数是否大于右边的,如果是,则返回 true。 [ a -gtb ] 返回 false。
-lt 检测左边的数是否小于右边的,如果是,则返回 true。 [ a -ltb ] 返回 true。
-ge 检测左边的数是否大于等于右边的,如果是,则返回 true。 [ a -geb ] 返回 false。
-le 检测左边的数是否小于等于右边的,如果是,则返回 true。 [ a -leb ] 返回 true。
#!/bin/bash


a=10
b=20

if [ $a != $b ]
then
   echo "$a != $b : a 不等于 b"
else
   echo "$a == $b: a 等于 b"
fi
if [ $a -lt 100 -a $b -gt 15 ]
then
   echo "$a 小于 100 且 $b 大于 15 : 返回 true"
else
   echo "$a 小于 100 且 $b 大于 15 : 返回 false"
fi
if [ $a -lt 100 -o $b -gt 100 ]
then
   echo "$a 小于 100 或 $b 大于 100 : 返回 true"
else
   echo "$a 小于 100 或 $b 大于 100 : 返回 false"
fi
if [ $a -lt 5 -o $b -gt 100 ]
then
   echo "$a 小于 5 或 $b 大于 100 : 返回 true"
else
   echo "$a 小于 5 或 $b 大于 100 : 返回 false"
fi

3. 布尔运算符

符号 说明 举例
! 非运算,表达式为 true 则返回 false,否则返回 true。 [ ! false ] 返回 true。
-o 或运算,有一个表达式为 true 则返回 true。 [ a -lt 20 -ob -gt 100 ] 返回 true。
-a 与运算,两个表达式都为 true 才返回 true。 [ a -lt 20 -ab -gt 100 ] 返回 false。
a=10
b=20

if [ $a != $b ]
then
   echo "$a != $b : a 不等于 b"
else
   echo "$a == $b: a 等于 b"
fi
if [ $a -lt 100 -a $b -gt 15 ]
then
   echo "$a 小于 100 且 $b 大于 15 : 返回 true"
else
   echo "$a 小于 100 且 $b 大于 15 : 返回 false"
fi
if [ $a -lt 100 -o $b -gt 100 ]
then
   echo "$a 小于 100 或 $b 大于 100 : 返回 true"
else
   echo "$a 小于 100 或 $b 大于 100 : 返回 false"
fi
if [ $a -lt 5 -o $b -gt 100 ]
then
   echo "$a 小于 5 或 $b 大于 100 : 返回 true"
else
   echo "$a 小于 5 或 $b 大于 100 : 返回 false"
fi

4.逻辑运算符

&& 逻辑的AND
|| 逻辑的OR

a=10
b=20

if [[ $a -lt 100 && $b -gt 100 ]]
then
   echo "返回 true"
else
   echo "返回 false"
fi

if [[ $a -lt 100 || $b -gt 100 ]]
then
   echo "返回 true"
else
   echo "返回 false"
fi

5. 字符串运算符

符号 说明 举例
= 检测两个字符串是否相等,相等返回 true。 [ a =b ] 返回 false。
!= 检测两个字符串是否相等,不相等返回 true。 [ a !=b ] 返回 true。
-z 检测字符串长度是否为0,为0返回 true。 [ -z $a ] 返回 false。
-n 检测字符串长度是否为0,不为0返回 true。 [ -n "$a" ] 返回 true。
$ 检测字符串是否为空,不为空返回 true。 [ $a ] 返回 true。

a="abc"
b="efg"

if [ $a = $b ]
then
   echo "$a = $b : a 等于 b"
else
   echo "$a = $b: a 不等于 b"
fi
if [ $a != $b ]
then
   echo "$a != $b : a 不等于 b"
else
   echo "$a != $b: a 等于 b"
fi
if [ -z $a ]
then
   echo "-z $a : 字符串长度为 0"
else
   echo "-z $a : 字符串长度不为 0"
fi
if [ -n "$a" ]
then
   echo "-n $a : 字符串长度不为 0"
else
   echo "-n $a : 字符串长度为 0"
fi
if [ $a ]
then
   echo "$a : 字符串不为空"
else
   echo "$a : 字符串为空"
fi

四、流程控制

1.if else

if condition
then
    command1 
    command2
    ...
    commandN
else
    command
fi

2. if elif else

if condition1
then
    command1
elif condition2 
then 
    command2
else
    commandN
fi

五、时间date在脚本中的几个用法

1. 获取年月日时分秒周几

现在时间 2019-12-24 11:16:23 周二

date +%Y 以四位数字格式打印年份
2019

date +%y 以二位数字格式打印年份
19

date +%m 月份
12

date +%d 日期(几号)
24
date +%H 小时
11

date +%M 分钟
16
date +%S 秒
23
date +%w 星期,如果结果显示0,则表示周日
2

image.png

注意:一定要记得这个空格,不然有问题

2. 获取今天前n天或这后n天的时间

date -d "num params" +%p

num: 前几或者后几 比如:-1 或者 3
params参数的取值:year month day hour min second week
p参数的取值:Y m d H M S w

当前时间:2019-12-24 11:37:23

date -d "-1 year" +%Y  
结果:2018
date -d "1 month" +%m 
结果:01
date -d "-1 day" +%d 
结果:23
date -d "-1 hour" +%H 
结果:10
date -d "-1 min" +%M  
结果:36
date -d "-1 second" +%S 
结果:22

相关文章

  • Shell编程、part1

    1.shell简介2. shell分类3. 查看shell4. 第一个shell脚本5. shell编程常用命令5...

  • Shell脚本

    shell脚本学习笔记 shell命令的组合运用 常用命令组合

  • Shell脚本语法

    1. Shell脚本简介Shell 脚本(shell script),是一种为 shell 编写的脚本程序。业界所...

  • Linux操作系统命令汇总

    SHELL脚本学习笔记 标签(空格分隔): linux shell脚本 1. 常用命令汇总 alias 设置别名u...

  • Linux Shell: 各种tips

    通用Linux中执行shell脚本的4种方法总结hbase shell基础和常用命令详解 2.字符串Shell脚本...

  • shell脚本的常用循环

    1 shell脚本简介 在简单介绍shell脚本(shell script)之前,先简单介绍一下shell。 1....

  • 01.shell简介

    Shell简介 Shell 脚本 shell环境 sh(全称 Bourne Shell): 是UNIX最初使用的 ...

  • [shell脚本]-shell脚本简介

    1.简介 shell脚本就是将一系列需要执行的命令写入文件,通过各类不同的解释器来执行文件,从而达到和linux操...

  • Shell参考资料

    shell 目录 Shell简介 Shell常用命令 Shell里面的括号 Shell里面的单引号和双引号 She...

  • shell脚本的一些常用命令简介

    一、前言 什么是shell脚本Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。所以,s...

网友评论

      本文标题:shell脚本的一些常用命令简介

      本文链接:https://www.haomeiwen.com/subject/enftoctx.html