Category Archives: Code

python全局变量与命名空间

[python] KEY_WORD = "A" def temp(): print KEY_WORD KEY_WORD = "B" [/python] 这段代码运行会提示变量KEY_WORD在定义前使用。原因是因为一旦在函数中修改全局变量,则python会将全局变量认成局部变量,在函数的命名空间内寻找其定义。如果要修改全局变量,要在函数内使用global关键字进行声明。如下: [python] KEY_WORD = "A" def temp(): global KEY_WORD print KEY_WORD KEY_WORD = "B" [/python] 当然,我个人更倾向将全局变量只作为常量。

Posted in Code, Python | Tagged , , | Leave a comment

shell中的$@与通配符

$@在shell中表示所有参数,与$*不同的是,$@中的每个参数都相当于被双引号包含的独立字符串。 然而如果使用通配符传递文件名的时候,如果文件名中包含空格,$@会将包含空格的文件名理解成数个文件,这时只要使用引号将通配符引起再传递或者使用”$@”就可以了。

Posted in Code | Tagged , , | Leave a comment

Shell编程中的光标控制

这两天做选修课实验,有一个项目要求在屏幕中英显示信息,在网上搜了一下,发现没有太好的解决方法,唯一比较精确的是利用控制字符: 例: [shell] echo -ne "\33[20;40H" [/shell] #把光标移到20行40列 不过这样做有一个问题就是终端的行列数是不定的,没办法做到相对控制。今天在看Shell命令的时候发现了tput命令。tput -cols可以得到当前终端总列数,tput -lines可以得到总行数(不过奇怪的是man手册里没有lines这个参数,害得我开始还以为得不到行数),这样再结合echo就行了,如显示在屏幕右下角可以写成: [shell] #!/bin/bash lines=`tput lines` cols=`tput cols` echo -ne "\33[$lines;${cols}H" [/shell]

Posted in Code | Leave a comment

shell脚本中配置文件的读取

要做一个日志管理的shell脚本,希望做的通用一些,所以需要读取配置文件。在询问达人和网上搜索后,找到如下两种方法: 1.使用awk和正则表达式来匹配配置文件 2.将配置文件也写成脚本,在执行脚本中用source来载入 感觉上呢,第一种限制下,配置文件可以写的很灵活,但是稍稍麻烦一些;第二种则很简单,但受限制较多。

Posted in Code | Leave a comment