Thursday, January 8, 2009

shell中使用python代码

这样的使用方法我以前也写过, 不过, 此时非彼时, 当时有些事是没有解理到的:
1. shell还是shell, 就算加入了python, 它还是shell
1. python代码不能太长!会违反上面的原则
1. unix思想: 简单但尽完美完成自己那部分(流程的一个节点)

如果要在shell脚本中嵌入太多的代码, 那请使用python脚本吧

shell经久不衰, 已证明它的魅力。

那为什么又要使用在shell脚本python呢?

在shell中处理字符串不是很方便(至少我自己到的是这样认为), 需要对sed等等程序了解.

虽然在shell中引入python代码, 会使shell脚本代码增加长, 不好看,但至少简单的多行python代码比sed,awk等来得简单, 容易看懂和维护

shell中使用python代码, 有两个关键点:
1. python定在shell脚本文件中
1. shell与python代码片的信息交流

满足第一个条件是很简单的, 就是使用python的-c参数!

第二个条件的方法:
1. 使用arguments
1. 使用environments
1. 使用pipe

下面的代码片一次性使用了这三种方法:

export EnvOne="EnvOne"

ls -l | python -c """
import sys, os
#### read data from stdin ####
for line in sys.stdin.readlines():
print line.strip('\n')
#### get data from environment ####
print os.environ['EnvOne']
#### pass info from argument
print sys.argv[1]
print sys.argv[2]

""" Arg1 Arg2
exit 0

过程如下:
ls把结果通过pipe传数据给python
shell在启动python时还给点一些信息它:
1. 参数的方式给了信息
1. shell在产生子进程时还给了环境变量的信息

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.