shell还是python,python中的shell是什么意思

  shell还是python,python中的shell是什么意思

  Python和shell是我们经常使用的脚本语言。平时主要用python写一些小任务,用liunx系统部署任务的时候更多用shell。因为两者有一些相似之处,时间长了容易混淆,所以下面简单介绍一下两者的用法区别。

  变量

  Python定义和使用只需要使用变量名,比如:

  var="你好"

  printvar

  #helloshell只需要变量名来定义变量,而使用变量值则需要$ sign,例如:

  var=你好

  echo$var

  #你好数组的定义

  python中没有数组的概念,但是有链表、tuple、dict等。可以代替它的功能。声明一个列表并使用它的一个元素,如下所示:

  数字=[1,2,3,4,5]

  printnumbers[0]

  # 1 # 1 shell中只有一维数组。其声明和用法如下:

  数字=(12345)

  打印${numbers[0]}

  #1

  #返回所有值

  打印${numbers[*]}

  注释12345号

  Python和shell可以用#添加单行注释,python可以用" "注释" "添加多行注释。

  相关:《Python基础教程》

  逻辑判断

  条件的定义

  在python中,除了所有空值都被视为假之外,所有值都被解释为真。这里的空值包括:none,0,"",(),{},[]和False。以下是一些例子。

  比较运算符支持其他运算符,其中比较特殊的运算符有:

  * x是y x和y是同一个对象。

  * x不是y

  * y集中的x和y集中的x

  * x不在y中

  逻辑预算法使用and、or、not。

  壳牌的想法则截然不同。它使用test命令进行条件测试。通常以[条件]的形式书写。注意方括号两边要有空格。它支持三种类型的测试:

  *数值比较,需要用-eq,-gt代替==,

  *字符串比较,可以用=,需要用短命令比如-n,比如-n str来判断str长度是否非零。

  *文件比较时,需要使用一个简短的命令,比如-e file来确定文件是否存在。

  逻辑运算符,用于连接不同的[条件]

  另外,高级数学表达式推荐使用((表达式))逻辑判断,比如自增量、位移运算符、按位运算符、逻辑AND等等。

  高级字符串判断使用[[ expression ]]逻辑判断,可以使用[[ $teststr==r* ]]这样的正则表达式来判断R开头的字符串。

  shell的数值运算建议用$[expression],浮点数回显“expression” BC。

  if else

  python中的If else用法如下:条件语句后面跟冒号,语句块用缩进分隔。

  if条件:

  声明

  elifcondition:

  声明

  else:

  然而,在statementshell中,if else的用法如下。它使用then和elseif或fi定义一个语句块,理论上不需要缩进。

  如果[条件]

  然后

  声明

  elif[条件]

  然后

  statem

  ent

  else

  statement

  fifor循环

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

  

foriteminsequence:

  statement

shell中for的使用方式类似

  

foriteminlist

  do

  statement

  done

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

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

  

for((i=1;i<=10;i++))

  do

  statement

  done

while循环

  python的while写法,如下:

  

whilecondition:

  statement

shell的while写法,如下:

  

while[conditon]

  do

  statement

  done

异常处理

  python的异常处理方式

  

try:

  statement

  except:

  statement

  finally:

  finalStatement

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

  文件操作

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

  

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

  

catfilenamewhilereadline

  do

  echo$line

  done

  #或者

  IFS='\n'

  forlinein`catfilename`

  do

  echo$line

  done

函数

  python的函数如下形式:

  

deffunctionname(params):

  '函数文档'

  statement

  returnvalue

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

  shell中函数形式

  

functionfunctionname{

  commands

  returnvalue

  }

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

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: