ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Python之路 【第十九篇】Shell脚本

2021-07-06 02:00:16  阅读:233  来源: 互联网

标签:Shell Python echo 第十九 VAR root baism bash


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}.txt
done

 

执行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

 

标签:Shell,Python,echo,第十九,VAR,root,baism,bash
来源: https://www.cnblogs.com/huahuawang/p/14975094.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有