python和shell像吗

python和shell是我们经常使用的脚本语言。通常,python主要用于编写一些小任务,而shell更多地用于使用liunx系统部署任务。由于它们之间存在一些相似之处,因此在很长一段时间内很容易混淆,因此我们在这里介绍它们之间的用法差异。
变量
python的定义和使用只需使用变量名,例如:
var=“hello” printvar #hello
shell定义变量只需要变量名,而使用变量的值需要增加$符号,例如:
var="hello" echo$var #hello
数组的定义
python中没有数组的概念,但有list,tuple,dict等可以替代其功能,声明list并使用其中一个元素,如下:
numbers=[1,2,3,4,5] printnumbers[0] #1
shell中只有一维数组,其声明和使用方法如下:
numbers=(12345)
print${numbers[0]}
#1
#返回所有值
print${numbers[*]}
#12345注释
python和shell都可以用#号添加单行注释,python可以用“注释”添加多行注释。
相关推荐:Python基础教程
逻辑判断
条件的定义
在python中,除所有被认为是False的空值外,所有的值都被解释为真正的True,其中包括:None,“,(),{},[]和False,以下是例子。
比较支持其他比较操作符,其中比较特殊的操作符包括:
* x is y x和y是同一个对象
* x is not y
* x in y x在y集合中
* x not in y
and用于逻辑预算法,or,not.
shell的概念非常不同,它使用test命令进行条件测试,它通常被写成[ condition ]注意方括号两侧有空格,支持三种测试:
* 比较数值,需要使用-eq,-用gt代替==,>
* 对比字符串,可以使用=,需要使用-n等短命令,如-n str判断str长度是否非零
* 比较文件需要短命令,比如-e file判断文件是否存在
逻辑运算符&&,||连接不同的[ condition ]
此外,建议使用先进的数学表达式(( expression ))逻辑判断可以使用自增++,位移运算符<<,位运算符&,逻辑与&&等等
判断使用高级字符串的使用情况[[ expression ]]逻辑判断可以类似于正则表达式[[ $teststr== r* ]]判断r开头的字符串
推荐使用shell的数值运算$[expression]echo用于计算浮点数 “expression”| bc获取计算值的方法
if else
if在python中的if else的使用方法如下,条件句后加冒号,缩进分句块
ifcondition: statement elifcondition: statement else: statement
它的ifell不同于shell 使用else的方法如下,它使用then和elseif或fi来定义句子块,理论上不需要缩进
if[condtion] then statement elif[condtion] then statement else statement fi
for循环
python的for回收如下,仍然使用缩进来划分句块。
foriteminsequence: statement
for在shell中的使用方法相似
foriteminlist do statement done
Shell取item的分隔符全局变量为IFS(internal field separator),其默认值为空格、制表符、换行符,因此如果需要按行处理而忽略空格,则需要更改IFS值。
此外,shell还支持c语言形式的for循环,采用双小括号完成,形式如下:
for((i=1;i<=10;i++)) do statement done
while循环
whilepython的写作方法如下:
whilecondition: statement
shellwhile写法如下:
while[conditon] do statement done
异常处理
python的异常处理方法
try: statement except: statement finally: finalStatement
shell中没有相应的异常处理机制,只有每个命名的错误输出描述符2,可以通过2>&将错误输出重定向标准输出
文件操作
python使用open函数,有读写模式,只读r,只写w,添加apen
myfile=open("filename","r")
myfile.readlines()
myfile.close()
withopen("finename","w")asmyfile:
myfile.write("line\n")使用命令阅读shell阅读文件的内容,然后使用管道或重定向输入。常用的命令包括:
1. cat filename 阅读文件的全部内容
2. tail -n 2 filename读取最后两行
3. head -n 2 前两行读读前两行filename
阅读文件中的每一行处理一个经典问题,使用python非常简单。
withopen("filename","r")asmyfile:
forlineinmyfile.readlines():
printline使用shell
catfilename|whilereadline do echo$line done #或者 IFS='\n' forlinein`catfilename` do echo$line done
函数
python的函数形式如下:
deffunctionname(params): '函数文档' statement returnvalue
通过functioname,函数文档可以通过.doc获得
shell中函数形式
functionfunctionname{
commands
returnvalue
}通过函数functionname,使用变量获取返回值 param1 第一个和第二个参数通过$1和$2的方式传递,$#是参数数量,$*是所有参数。
