Chinaunix首页 | 论坛 | 博客
  • 博客访问: 209534
  • 博文数量: 247
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2501
  • 用 户 组: 普通用户
  • 注册时间: 2020-08-10 06:35
文章分类
文章存档

2024年(32)

2023年(86)

2022年(53)

2021年(42)

2020年(34)

我的朋友

分类: Python/Ruby

2022-12-29 20:52:04

整合shell编程

回忆上次内容

  • 用\r

    • 可以让输出位置回到行首
    • 原位刷新时间
  • 如果想要的是大字符效果

    • 需要使用 figlet
    • 但同时还希望能刷新

编辑
  • 这可能吗?????

建立脚本

  • 我们得熟悉一下shell
  • 先新建一个test.sh

    • vi test.sh
python3 show_time.py
python3 show_time.py
python3 show_time.py
  • 看起来就是把这个内容输出了 3 次

编辑
  • 可以执行么?

尝试执行

  • 注意执行细节

编辑
  • 在vim的正常状态用:w|!sh %执行

    • :w 保存
    • | 并且执行
    • !sh % 用外部命令sh执行这个test.sh

      • 注意这里使用的外部程序不是python
      • 而是sh
      • sh 就像 python3 是外部命令名
      • % 代指test.sh

        • 就像以前的sleep.py
        • 是文件名

编辑
  • 确实输出了三次时间
  • 但我还想把字变大怎么办呢?

figlet变大

  • show_time.py 的输出字符串

    • 直接通过 管道| 给到 figlet
  • 其中

    • show_time.py程序

      • 只负责输出时间
    • 输出的结果

      • 通过管道|给 figlet
    • figlet

      • 负责变大

编辑
  • 如果想要输出三个变大之后的时间
  • 应该如何呢?

三次输出

  • 修改test.sh

    • vi test.sh
    • 编写以下文件
python3 show_time.py | figlet
python3 show_time.py | figlet
python3 show_time.py | figlet
  • 尝试运行

编辑
  • 运行结果

编辑
  • 确实变大了

    • 而且输出了三次
  • 现在需要不只输出三次

    • 而是无限多次不断刷新
    • 应该怎么办呢?

尝试循环

  • 无限多次肯定需要循环!
  • 原来放在 python文件 中的的循环和定时功能

    • 现在都需要放在 sh脚本 文件里
    • 由 shell 来控制延迟的节奏
  • 那问题来了

    • sh脚本文件 如何进行循环?

搜索一下!

编辑

编辑
  • 尝试根据这个修改

shell循环

  • 在shell中

    • 新编辑一个loop.sh
    • vi loop.sh
  • 输入以下内容
for a in {1..10}
do
    echo $a
done
  • 尝试运行此文件

保存并运行

编辑
  • :w 保存当前文档
  • :!sh %运行当前shell
  • :w|!sh %保存并运行当前shell
  • 执行的结果如下

编辑
  • 成功循环了起来
  • 光是循环还不够

    • 还需要延迟
  • 怎么办?

搜索延迟

编辑
for a in {1..10}
do
    echo $a
    sleep 1s
done

编辑
  • :w|!sh %

    • 保存并运行当前 shell
  • 延迟成功

    • 接下来需要输出时间了
    • 而且是通过管道给 figlet 的大时间

整合 python

  • 把原来数字的部分换成执行命令

    • python3 show_time.py | figlet
for a in {1..10}
do
    python3 show_time.py | figlet
    sleep 1s
done
  • 输出成功

    • 确实可以刷新
    • 但是一屏幕上
    • 有两个时间
  • 很乱!

编辑
  • 我想只要一个!

    • 少则得多则惑!
  • 可以清一下屏幕么?

尝试清屏

编辑
for a in {1..10}
do
    clear
    python3 sleep.py | figlet
    sleep 1s
done
  • 先去总结一下

总结

  • 这次我们研究了shell脚本的编程
  • 并且在shell中实现了

    • 循环语句
    • 延迟命令
    • 清屏命令
    • python命令
    • figlet命令

编辑
阅读(288) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~