【linux/shell实战案例】在shell中插入Python代码及EOF解析

目录

一.什么情况需要在shell中插入Python代码

二.如何在shell中插入Python代码

三.什么是内联输入重定向?

四.什么是EOF

五.为什么要用EOF

六.<<EOF和<<-EOF的区别

七.案例代码


一.什么情况需要在shell中插入Python代码

  • shell不好处理的数据或文件,Python有更方便的函数库可使用;
  • 合并一些其他人写的Python脚本,使用shell统一管理,减少文件数量。

二.如何在shell中插入Python代码

  1. 创建一个.sh文件,在里面正常写shell;
  2. 写到需要插入Python代码的位置,按照内联输入重定向的合适插入以下内容:
bash 复制代码
python<<EOF

import os

files=os.listdir("$1")

files.sort()

......

EOF

三.什么是内联输入重定向?

格式

bash 复制代码
command<<dilimiter

document

delimiter

它的作用是将一对分隔符之间的内容(命令或文本)作为输入传递给命令command,注意结尾的delimiter要顶格写,不能有空格和制表符。

通常我们使用的delimiter是EOF这个关键字。

四.什么是EOF

在C语言中存在关键字EOF。

EOF,为End Of File的缩写,通常在文本的最后存在此字符表示资料结束。

EOF是一个整数类型的宏定义,扩展为负数常量表达式(通常为-1)。它被头文件中的好几个函数作为返回值使用,来表明已经到达文件尾或者示意一些其他的错误条件。

五.为什么要用EOF

在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。

在文本文件中,数据都是以字符的ASCII代码值的形式存放。我们知道,ASCII代码值的范围是0~127,不可能出现-1,实际上 EOF 的值通常为 -1,因此可以用EOF作为文件结束标志。

objectivec 复制代码
#include <stdio.h>
int main(){
    int n;
    while(scanf("%d",&n) != EOF){ 

    }
    return 0;
}

当上面的程序运行时,如果不加" != EOF",那么这个程序就是个死循环,会一直运行下去;加上" != EOF"后该程序就不是死循环了

六.<<EOF和<<-EOF的区别

<<-EOF将忽略起止内容中前面的tab制表符,而<<EOF不会

bash 复制代码
cat <<EOF

    line1

    line2

EOF

输出:

    line1

    line2
bash 复制代码
cat <<EOF

    line1

    line2

EOF

输出: 

line1

line2

七.案例代码

在shell中创建一个函数,这个函数中包含了Python代码,并且含有参数。

bash 复制代码
#!/bin/bash
function data2d_trans list(
#python function
python<<-EOF
import os
files=os.listdir("$1")
files.sort()
for file in files:
path="$1"+"/"+file
fl=open(path)
for line in fl.readlines):
line=line.replace("n","")
line=line.strip).split("t")
for i in line:
if i==":
line.remove(i)
for num in line:
f2=open("$2",'a)
f2.write(num)
f2.write("t")
f2.write("n")
f2.close()
f1.close()
EOF
}
#use function
data2d_trans_list dir_power temp_data_ power
相关推荐
A 计算机毕业设计-小途15 分钟前
大四零基础用Vue+ElementUI一周做完化妆品推荐系统?
java·大数据·hadoop·python·spark·毕业设计·毕设
Wy_编程3 小时前
Linux-文本搜索工具grep
linux·运维·服务器
xujiangyan_3 小时前
linux的sysctl系统以及systemd系统。
linux·服务器·网络
Lovyk3 小时前
Linux Shell 常用操作与脚本示例详解
linux·运维·服务器
念念01074 小时前
数学建模竞赛中评价类相关模型
python·数学建模·因子分析·topsis
云天徽上4 小时前
【数据可视化-94】2025 亚洲杯总决赛数据可视化分析:澳大利亚队 vs 中国队
python·信息可视化·数据挖掘·数据分析·数据可视化·pyecharts
☺����5 小时前
实现自己的AI视频监控系统-第一章-视频拉流与解码2
开发语言·人工智能·python·音视频
王者鳜錸5 小时前
PYTHON让繁琐的工作自动化-函数
开发语言·python·自动化
xiao助阵6 小时前
python实现梅尔频率倒谱系数(MFCC) 除了傅里叶变换和离散余弦变换
开发语言·python
yuanpan7 小时前
ubuntu系统上的conda虚拟环境导出方便下次安装
linux·ubuntu·conda