python和shell都是我们经常使用的脚本语言,平时python主要用来写一些小型的任务,shell则在使用liunx系统部署任务的时候用的比较多,由于两者有一些相似之处,时间长了容易混掉,所以这里作文对一些基础的语法需求总结、比较、归纳,以为后用。

变量

python定义和使用只需要使用变量名,例如

var=“hello”

print var

# hello

1

2

3

shell定义变量只需要变量名,而使用变量的值则需要加$符号,例如

var="hello"

echo $var

# hello

1

2

3

数组的定义

python中没有数组的概念,但是有list,tuple,dict等可以代替其功能,声明一个list并使用其中的一个元素如下

numbers=[1,2,3,4,5] print numbers[0] # 1

1

2

3

shell中只有一维数组,其声明和使用方法如下

numbers=(1 2 3 4 5) print ${numbers[0]} # 1 #返回所有的值用 print ${numbers[*]} # 1 2 3 4 5

1

2

3

4

5

6

注释

python和shell都可以是用#号添加单行注释,python可以使用”’注释”’添加多行注释

逻辑判断

条件的定义

在python中,除了所有的空值被认为False外所有的值都被解释为真True,这里的空值包括:None,0,”“,(),{},[]和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

python中的if else使用方式如下,条件语句后加冒号,并且以缩进划分语句块

if condition:

statement

elif condition:

statement

else:

statement

1

2

3

4

5

6

shell中则不同,其if else使用方式如下,它使用then和elseif或fi来界定语句块,理论上不需要缩进

if [ condtion ]

then

statement

elif [condtion]

then

statement

else statement fi

1

2

3

4

5

6

7

8

9

for循环

python的for循环使用如下,仍然用缩进划分语句块

for item in sequence:

statement

1

2

shell中for的使用方式类似

for item in list

do

statement

done

1

2

3

4

其中shell取item的分隔符全局变量为IFS(internal field separator),其默认值为空格,制表符,换行符,所以如果需要按行处理而忽略空格的话需要改变IFS的值

另外shell还支持c语言形式的for循环,它使用双小括号来完成,形式如下

for (( i=1; i<=10;i++)) do statement done

1

2

3

4

while循环

python的while写法如下

while condition:

statement

1

2

shell的while写法如下

while [ conditon ]

do

statement

done

1

2

3

4

异常处理

python的异常处理方式

try:

statement

except:

statement

finally:

finalStatement

1

2

3

4

5

6

shell中没有相应的异常处理机制,只有每条命名的错误输出描述符2,可以通过2>&1将错误输出重定向到标准输出

文件操作

python使用open函数,其有读写模式有只读r,只写w,添加a

myfile=open("filename","r")

myfile.readlines()

myfile.close()

with open("finename","w") as myfile: myfile.write("line\n")

1

2

3

4

5

shell读取文件的内容使用命令来读取,然后使用管道或者重定向进行输入处理,常用的命令有

1. cat filename 读取文件的全部内容

2. tail -n 2 filename读取尾两行

3. head -n 2 filename读取前两行

一个经典的问题,读取一个文件中的每一行做处理,使用python很简单

with open("filename","r") as myfile: for line in myfile.readlines(): print line

1

2

3

使用shell

cat filename|while read line

do

echo $line done #或者 IFS='\n' for line in `cat filename` do echo $line done

1

2

3

4

5

6

7

8

9

10

函数

python的函数如下形式

def functionname(params):

'函数文档' statement return value

1

2

3

4

其中函数文档可以通过functionname.doc获得

shell中函数形式

function functionname {

commands

return value }

1

2

3

4

使用变量获取返回值,参数通过函数functionname param1 param2的方式传递,通过$1,$2的方式取出第一第二个参数,$#为参数数量,$*为所有参数。

shell python对比_python和shell对比相关推荐

  1. shell python优势_python的优势

    跟C/C++/Java相比 - Python/Ruby能让你用少的多的多的代码写出相同的程序.有人计算过,Python或Ruby写出的程序的代码行数只相当于相对应的Java代码 的行数的五分之一.如果 ...

  2. python的shell无法输入_python中shell如何逐行输入?

    我们都知道逐条输入信息是比较枯燥的,我们在程序中会设置一些脚本来自动完成.我们可以借用python shell这个工具来完成,其打开的方法想必都已经学会了.主要有两种方法:print和转换脚本语言.前 ...

  3. rust python对比_Python Rust 迭代器对比

    迭代是数据处理的基石,而 Python 中所有集合都可以迭代,这是 Python 让使用者感到非常方便的特征之一. 下面是一些在 Python 中经常使用的迭代模式 # 列表 for i in [1, ...

  4. python里的shell是什么_Python与shell的3种交互方式介绍

    概述 考虑这样一个问题,有hello.py脚本,输出"hello, world!":有TestInput.py脚本,等待用户输入,然后打印用户输入的数据.那么,怎么样把hello. ...

  5. python爬虫对比_Python六大框架对比,Web2py略胜一筹|python爬虫|python入门|python教程...

    https://www.xin3721.com/eschool/pythonxin3721/ Python是一门动态.面向对象语言.其最初就是作为一门面向对象语言设计的,并且在后期又加入了一些更高级的 ...

  6. python shell常用命令_python 之 shell命令执行

    python中有几种常用的执行shell命令的模块 1,os.system() 2, os.popen() 3,pexpect.run() 下面介绍3个模块的差别 1,os.system() 直接执行 ...

  7. python web三大框架对比_Python六大框架对比,Web2py略胜一筹

    Python是一门动态.面向对象语言.其最初就是作为一门面向对象语言设计的,并且在后期又加入了一些更高级的特性.除了语言本身的设计目的之外,Python标准库也是值得大家称赞的,Python甚至还自带 ...

  8. python shell常用命令_python执行shell命令

    1 os.system 可以返回运行shell命令状态,同时会在终端输出运行结果 例如 ipython中运行如下命令,返回运行状态status os.system('cat /etc/passwdqc ...

  9. pythonide对比_Python主流IDE对比:Eric VS. PyCharm

    IDE, 全称是Integrated Development Environment,翻译过来就是集成开发环境.Python的开发从2010年5月算起,不知不觉中,到现在已经是第七个年头. 这六年里, ...

最新文章

  1. [architecture]-ARMV8的The current Program Counter (PC)介绍
  2. 练习1-17 编写一个程序,打印长度大于80个字符的所有输入行.
  3. 使用python自己搭建一个简单的BP神经网络
  4. HDU1002 大数相加
  5. android 实现自动拍照,Android自定义相机实现定时拍照功能
  6. asp.net调试技巧
  7. Linux终端显示工作路径
  8. java.sql.SQLException
  9. SQL Server-已更新或删除的行值要么不能使该行成为唯一行,要么改变了多个行...
  10. 台达b3伺服modbus通讯_台达PLC与伺服Modbus通讯PLC编程服务程序代写程序设计专业专注...
  11. 成品app直播源码,实现图形验证码
  12. 电脑无规律无响应,鼠标能动但是点击无反应一直在转圈。
  13. 阿里企业邮箱:密码登录
  14. winform pdf转图片.jpg或.png(O2S.Components.PDFRender4NET)
  15. 人民币小写转大写的一般方法
  16. 【php】PHP数据库访问
  17. 拥抱 Android Studio 之四:Maven 仓库使用与私有仓库搭建
  18. java项目实验报告_javaweb项目实验报告.docx
  19. 基于ATX自动化测试解决方案
  20. ext3分区修复linux,ext3文件系统超级块损坏修复

热门文章

  1. 2021-08-18 Win10安装Oracle 11g时遇到“【INS-13001】此环境不满足最低配置”的问题解决措施
  2. 新站如何推广 新站推广的基础方法
  3. scikit-learn 机器学习工具
  4. 2020中国云存储(对象存储)服务商TOP20
  5. Python猴子摘桃
  6. 奖补100万!2022年武汉市智能制造试点示范企业申报流程及条件梳理
  7. acwing4652.纸张尺寸
  8. Rockchip | Rockchip Graphics与Display
  9. js jquery scrollTop 指定位置
  10. [魔方]手部极限运动