shell编程

1、shell脚本的多种运行方式

1、示例demo(Linux)

cat > shell.sh <<'EOF' # 启动cat命令,接收标准输入的内容并将这些内容写入到名为shell.sh的文件中
#!/bin/bash
echo "开始学编程了,好刺激!!"
EOF

在这里插入图片描述

运行(两种)

1. 不强制用哪种解释器,但是你得 1. 加执行权限  2.代码中进行解释器声明。
添加执行权限,直接运行脚本路径
chmod u+x shell.sh

[root@m-61 ~/part3-shell]#./shell.sh 
开始学编程了,好刺激!!
2. 无须执行权限,以解释器强制性去运行,明确指定了,用什么解释器去执行(bash、sh)
①bash运行
[root@m-61 ~/part3-shell]#bash shell.sh 
开始学编程了,好刺激!!

②sh运行
[root@m-61 ~/part3-shell]#sh shell.sh 
开始学编程了,好刺激!!

③点运行. 但是,要求,脚本第一行,必须有解释器生命
[root@m-61 ~/part3-shell]#. shell.sh 
开始学编程了,好刺激!!

④source运行
[root@m-61 ~/part3-shell]#source shell.sh 
开始学编程了,好刺激!!
[root@m-61 ~/part3-shell]#
[root@m-61 ~/part3-shell]#

2、python代码同理示例:

示例代码:

cat > hello.py <<'EOF'
#!/usr/bin/env python
#coding:utf-8
print ("python运行中文,条件限制有点多,但是你在学编程了,这些语法,都得记住。因为你会用到")
EOF

在这里插入图片描述 执行
可以正确执行的:直接指定解释器去运行

[root@m-61 ~/part3-shell]# python hello.py
python运行中文,条件限制有点多,但是你在学编程了,这些语法,都得记住。因为你会用到

添加执行权限
在这里插入图片描述

python2.0 这里报错的原因:
基于linux的bash环境,如果代码没声明用什么语言去执行系统默认用bash去运行
在这里插入图片描述

在这里插入图片描述
附加:多重声明

在代码中有了声明,又强制用解释器去跑,谁优先?【外部的解释器执行优先级更高】
在这里插入图片描述

3、体验一波编译型语言的运行流程(golang示例)

# 1、安装golang 
yum install epel-release golang -y
# ubuntu 对应的命令
sudo apt update
sudo apt install golang -y

# 2、查看golang编译器的版本
[root@m-61 ~/part3-shell]#go version
go version go1.17.7 linux/amd64

#3、编写golang的纯文本类型的代码

在这里插入图片描述
在这里插入图片描述

其实就是对原文件执行了:go build -o jiayou jiayou.go命令,生成一个可以在同架构机器上运行的二进制脚本文件(而无需重复安装环境)【docker安装的原理】在这里插入图片描述

2、编译、解释语言区别[略]

我们使用vim编写纯文本的代码,利用bash\python2\python3等解释器对文本代码进行解释,才能执行对应的功能。【shell-解释性】
在这里插入图片描述

3、关于shell开发的规范详解

一切皆为文件在这里插入图片描述

shell脚本的三剑客:grep、sed、awk

shell脚本的三剑客:grep、sed、awk
①grep在这里插入图片描述
在这里插入图片描述
②Sed
在这里插入图片描述
在这里插入图片描述
③awk
在这里插入图片描述
在这里插入图片描述

shell解决的问题(linux命令+不同数据类型)

在这里插入图片描述

如何学好shell编程(shell语法+具体的数据文件)

vim+linux+正则+三剑客
在这里插入图片描述

4、shell脚本编写语法规范

4.1、一个规范的脚本示例

learn_shell_first.sh

#!/bin/bash     #! 这个符号在计算机中读作shebang,表示指定用什么解释器运行脚本,只能在第一行,注释从第二行开始写
# Author: www.yuchaoit.cn  877348180@qq.com
# Create Time:  2022/05/25  
# Script Description: this is my first shell script.
# ???????理解刷 111,尽量用英文。否则可能导致脚本显示乱码。

作为解释型语言,我们肯定是需要为代码的执行指定解释器的。而在linux环境中的话,我们则是通过 #! 写在第一行来指定用什么解释器运行脚本(bash\python)。
#!/bin/bash
#!/usr/bin/env python【#!/usr/bin/python】

4.2、vim脚本开发插件

vim自动判断,
*.sh

*.php

*.py

分别提供该语言的语法高亮支持,一些功能支持。

1. 打开vim配置文件,写入你自己的插件语法
[root@m-61 ~]#vim ~/.vimrc



2. 复制粘贴语法即可

syntax on
set nocompatible
"set number
"filetype on
"set history=1000
"set background=dark
""set autoindent
"set smartindent
"set tabstop=4
"set shiftwidth=4
"set showmatch
"set guioptions-=T
"set ruler
"set nohls
"set incsearch
""set fileencodings=utf-8

if &term=="xterm"
    set t_Co=8
    set t_Sb=^[[4%dm
    set t_Sf=^[[3%dm
endif
function AddFileInformation_php()
      let infor = "<?php\n"
      \." ***************************************************************************\n"
      \." * \n"
      \." * Copyright (c) 2014 \n"
      \." *  \n"
      \." **************************************************************************/ \n"
      \." \n"
      \." \n"
      \." \n"
      \."/** \n"
      \." * @file:".expand("%")." \n"
      \." * @author your name(www.yuchaoit.cn) \n"
      \." * @date ".strftime("%Y-%m-%d %H:%M")." \n"
      \." * @version 1.0  \n"
      \." **/ \n"
      \." \n"
      \." \n"
      \." \n"
      \." \n"
      \." \n"
      \." \n"
      \."?>"
      silent  put! =infor
endfunction
autocmd BufNewFile *.php call AddFileInformation_php()

function AddFileInformation_sh()
      let infor = "#!/bin/bash\n"
      \."\n"
      \."# ***************************************************************************\n"
      \."# * \n"
      \."# * @file:".expand("%")." \n"
      \."# * @author:www.yuchaoit.cn \n"
      \."# * @date:".strftime("%Y-%m-%d %H:%M")." \n"
      \."# * @version 1.0  \n"
      \."# * @description: Shell script \n"
      \."# * @Copyright (c)  all right reserved \n"
      \."#* \n"
      \."#**************************************************************************/ \n"
      \."\n"
      \."\n"
      \."\n"
      \."\n"
      \."exit 0"
      silent  put! =infor
endfunction
autocmd BufNewFile *.sh call AddFileInformation_sh()

function AddFileInformation_py()
      let infor = "#!/usr/bin/env python\n"
      \."# -*- coding: utf-8 -*-\n"
      \."# ************************************************************************ \n"
      \."# * \n"
      \."# * @file:".expand("%")." \n"
      \."# * @author:www.yuchaoit.cn \n"
      \."# * @date:".strftime("%Y-%m-%d %H:%M")." \n"
      \."# * @version 1.0  \n"
      \."# * @description: Python Script \n"
      \."# * @Copyright (c)  all right reserved \n"
      \."# * \n"
      \."#************************************************************************* \n"
      \."\n"
      \."import os,sys"
      \."\n"
      \."print u'''中文'''\n"
      \."\n"
      \."exit()"
      silent  put! =infor
endfunction
autocmd BufNewFile *.py call AddFileInformation_py()

自己主要动手需要修改的内容:
在这里插入图片描述

vim插件的实际用法
在修改了vim配置文件之后,我们在通过vim命令去打开一个新的文件的话,则其文件会自动的增加给定内容。具体如下所示:
在这里插入图片描述
在这里插入图片描述

关于shell和python和运维的关系

在这里插入图片描述
python +shell 搞定运维自动化平台

4.3、代码调试运行方式

  1. 你以后再写完脚本后,如果直接运行,只能看到每一条命令的执行结果,看不到具体过程
  2. bash -x 脚本 ,查看脚本执行过程细节。

代码示例:
①语法正确版本

#!/usr/bin/env bash
# 用户输入交互
read -p "请输入账号:"  username
read -p "请输入密码:"  pwd

# 账号密码验证逻辑
if [[ "${username}" == "pyyu" && "${pwd}" == "www.yuchaoit.cn" ]];then
    echo "尊贵的SVIP,欢迎您登录!"
else
    echo "什么玩意?请你先注册!"
fi

在这里插入图片描述
②语法错误版本

#!/usr/bin/env bash
# 用户输入交互
read -p "请输入账号:"  username
read -p "请输入密码:"  pwd

# 账号密码验证逻辑
if [[ "${username}" == "pyyu" && "${pwd}" == "www.yuchaoit.cn" ]];then
    echo "尊贵的SVIP,欢迎您登录!"
else
    echo "什么玩意?请你先注册!"

在这里插入图片描述

4.4 、代码编写细节

更多其他shell的语法规则,咱们往后遇见了再一个个去介绍。

  1. 如括号,都是要成对出现的
如下符号,一次性,首尾都给写好。

例如大括号{}
中括号[]
小括号()
单引号' '
双引号" "
反引号` `
  1. shell语法要求,如条件判断的括号,前后必须有空格,学if的时候再细说。
  2. shell默认不强制要空格缩进以换行区分每一行新代码,但是写缩进,看着更美观。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值