存档

‘Code’ 分类的存档

python全局变量与命名空间

2010年6月10日 flex 没有评论
KEY_WORD = "A"

def temp():
    print KEY_WORD
    KEY_WORD = "B"

这段代码运行会提示变量KEY_WORD在定义前使用。原因是因为一旦在函数中修改全局变量,则python会将全局变量认成局部变量,在函数的命名空间内寻找其定义。如果要修改全局变量,要在函数内使用global关键字进行声明。如下:

KEY_WORD = "A"

def temp():
    global KEY_WORD
    print KEY_WORD
    KEY_WORD = "B"

当然,我个人更倾向将全局变量只作为常量。

分类: Code, Python 标签: , ,

shell中的$@与通配符

2010年5月20日 flex 没有评论

$@在shell中表示所有参数,与$*不同的是,$@中的每个参数都相当于被双引号包含的独立字符串。

然而如果使用通配符传递文件名的时候,如果文件名中包含空格,$@会将包含空格的文件名理解成数个文件,这时只要使用引号将通配符引起再传递或者使用”$@”就可以了。

分类: Code 标签: , ,

Shell编程中的光标控制

2007年11月17日 flex 没有评论

这两天做选修课实验,有一个项目要求在屏幕中英显示信息,在网上搜了一下,发现没有太好的解决方法,唯一比较精确的是利用控制字符:

例:

echo -ne "\33[20;40H"

#把光标移到20行40列

不过这样做有一个问题就是终端的行列数是不定的,没办法做到相对控制。今天在看Shell命令的时候发现了tput命令。tput -cols可以得到当前终端总列数,tput -lines可以得到总行数(不过奇怪的是man手册里没有lines这个参数,害得我开始还以为得不到行数),这样再结合echo就行了,如显示在屏幕右下角可以写成:

#!/bin/bash
lines=`tput lines`
cols=`tput cols`
echo -ne "\33[$lines;${cols}H"
分类: Code 标签:

shell脚本中配置文件的读取

2007年11月15日 flex 没有评论

要做一个日志管理的shell脚本,希望做的通用一些,所以需要读取配置文件。在询问达人和网上搜索后,找到如下两种方法:

1.使用awk和正则表达式来匹配配置文件

2.将配置文件也写成脚本,在执行脚本中用source来载入

感觉上呢,第一种限制下,配置文件可以写的很灵活,但是稍稍麻烦一些;第二种则很简单,但受限制较多。

分类: Code 标签: