程序笔记   发布时间:2022-07-18  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Python之路 【第十九篇】Shell脚本大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

SHell脚本编程

 

1 SHell是什么

SHell是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务, SHell脚本(sHell script),是一种为SHell编写的脚本程序。我们经常说的sHell通常都是指sHell脚本。

sHell脚本就是将完成一个任务的所有的命令按照执行的先后顺序,自上而下写入到一个文本文件中,然后给予执行权限。

 

编写sHell

#!/usr/bin/env bash # 从系统path中寻找指定脚本的解释程序mkdir code  cd code   for ((i=0; i<3; i++)); do touch test_${i}.txt echo "sHell很简单" >> test_${i}.txtdone

 

执行sHell

#1 赋予执行权限后,直接运行
chmod +x op_bash.sh
./op_bash.sh
 
# 2 使用bash命令来运行
bash  ./op_bash.sh

 

2 SHell关键字

常用的关键字如下:1. echo:打印文字到屏幕2. exec:执行另一个 SHell 脚本3. read:读标准输入4. expr:对整数型变量进行算术运算6. test:用于测试变量是否相等、 是否为空、文件类型等7. exit:退出

#!/bin/bash 

echo "Hello SHell"

# 读入变量
read VAR
echo "VAR is $VAR"

# 计算变量
expr $VAR - 5

# 执行其他 SHell 脚本
exec ./othersHell.sh

# 退出
exit

 

 

3 变量

SHell 变量:- 用户自定义变量

#!/bin/bash 

# 定义普通变量
CITY=SHENZHEN

# 定义全局变量
export NAME=cdeveloper

# 定义只读变量
readonly AGE=21

# 打印变量的值
echo $CITY
echo $NAME
echo $AGE

# 删除 CITY 变量
unset CITY
# 不会输出 SHENZHEN
echo $CITY运行结果:
SHENZHEN
cdeveloper
21

- 环境变量

#!/bin/bash

echo "print env"

echo $HOME
echo $PATH
echo $TERM
echo $PWD
echo $UID

运行结果:
# 当前主目录
/home/orange

# PATH 环境变量
/home/orange/anaconda2/bin:后面还有很多

# 当前终端
xterm-256color

# 当前目录
/home/orange

# 用户 ID
1000

 

4 字符串

# 拼接字符串
my_name="jack";
my_age="20岁"
echo $my_name $my_age
echo $my_name$my_age

# 获取长度
echo ${#my_namE}

截取字符串
echo ${my_name:0:2}

 

5 SHell运算

expr 命令:只能做整数运算,格式比较古板,注意空格
         [root@baism ~]# expr 1 + 1
         2
         [root@baism ~]# expr 5 - 2
         3
         [root@baism ~]# expr 5 * 2  #注意*出现应该转义,否则认为是通配符
         10
         [root@baism ~]# expr 5 / 2
         2
         [root@baism ~]# expr 5 % 2
         1
     使用bc计算器处理浮点运算,scale=2代表小数点保留两位
         [root@baism ~]# echo "scale=2;3+100"|bc
         103
         [root@baism ~]# echo "scale=2;100-3"|bc
         97
         [root@baism ~]# echo "scale=2;100/3"|bc
         33.33
         [root@baism ~]# echo "scale=2;100*3"|bc
         300
     双小圆括号运算,在sHell中(( ))也可以用来做数学运算
         [root@baism ~]# echo $(( 100+3))
         103
         [root@baism ~]# echo $(( 100-3)) 
         97
         [root@baism ~]# echo $(( 100%3))
         1
         [root@baism ~]# echo $(( 100*3))
         300
         [root@baism ~]# echo $(( 100/3))
         33
         [root@baism ~]# echo $(( 100**3))     #开方运算
         1000000

 

6 SHell语句

1. if 语句

#!/usr/bin/env bash

a=1
b=2
if [ $a == $b ]
    then
        echo "a 等于 b"
 elif [ $a -gt $b ]
    then
        echo "a 大于 b"
 elif [ $a -lt $b ]
    then
        echo "a 小于 b"
 else
    echo "没有符合的条件"

 fi

2 for 循环

for ((i=0; i<5; i++)); do
    echo "i="$i
done

3 while 语句

int=1
while(( $int<=5 ))
do
    echo $int
    let "int++"
done

4 break

#!/bin/bash 

for VAR in 1 2 3
do
#   如何 VAR 等于 2 就跳出循环
    if [ $VAR -eq 2 ]
    then
        break
    fi

    echo $VAR
done

5 conTinue

#!/bin/bash 

for VAR in 1 2 3
do
#   如果 VAR 等于 2,就跳过,直接进入下一次 VAR = 3 的循环 
    if [ $VAR -eq 2 ]
    then
        conTinue    
    fi

    echo $VAR
done

 

7 SHell函数

# ----定义函数----#!/bin/bash 

function Hello_world()
{
    echo "Hello world fun"
    echo $1 $2
    return 1
}

Hello()
{
    echo "Hello fun"
}#----2 调用函数-----
# 1. 直接用函数名调用 Hello 函数
Hello

# 2. 使用「函数名 函数参数」来传递参数
Hello_world 1 2

# 3. 使用「FUN=`函数名 函数参数`」 来间接调用
FUN=`Hello_world 1 2`
echo $FUN
# ----3获取返回值----
Hello_world 1 2
# $? 可用于获取前一个函数的返回值,这里结果是 1 
echo $?
 

 

8 编辑 /etc/crontab文件

crontab -e

在文件最后添加一行:

*/5 * * * * /xxx/check_nginx.sh > /dev/null 2>&1

上表示每 5 分钟,执行一下脚本 /xxx/check_nginx.sh,其中xxx代表路径

/dev/null 2>&1 的意思是该条sHell命令将不会输出任何信息到控制台,也不会有任何信息输出到文件中。

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * command to be executed

 

添加完配置,需要重启才能生效

service crond restart

 

大佬总结

以上是大佬教程为你收集整理的Python之路 【第十九篇】Shell脚本全部内容,希望文章能够帮你解决Python之路 【第十九篇】Shell脚本所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。