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:shell中for的使用方式类似statement
foriteminlist其中shell取item的分隔符全局变量为IFS(internal field separator),其默认值为空格,制表符,换行符,所以如果需要按行处理而忽略空格的话需要改变IFS的值。do
statement
done
另外shell还支持c语言形式的for循环,它使用双小括号来完成,形式如下:
for((i=1;i<=10;i++))while循环do
statement
done
python的while写法,如下:
whilecondition:shell的while写法,如下:statement
while[conditon]异常处理do
statement
done
python的异常处理方式
try:shell中没有相应的异常处理机制,只有每条命名的错误输出描述符2,可以通过2>&1将错误输出重定向到标准输出statement
except:
statement
finally:
finalStatement
文件操作
python使用open函数,其有读写模式有只读r,只写w,添加a
myfile=open("filename","r")shell读取文件的内容使用命令来读取,然后使用管道或者重定向进行输入处理,常用的命令有:myfile.readlines()
myfile.close()
withopen("finename","w")asmyfile:
myfile.write("line\n")
1. cat filename 读取文件的全部内容
2. tail -n 2 filename读取尾两行
3. head -n 2 filename读取前两行
一个经典的问题,读取一个文件中的每一行做处理,使用python很简单。
withopen("filename","r")asmyfile:使用shellforlineinmyfile.readlines():
printline
catfilenamewhilereadline函数do
echo$line
done
#或者
IFS='\n'
forlinein`catfilename`
do
echo$line
done
python的函数如下形式:
deffunctionname(params):其中函数文档可以通过functionname.doc获得'函数文档'
statement
returnvalue
shell中函数形式
functionfunctionname{使用变量获取返回值,参数通过函数functionname param1 param2的方式传递,通过$1,$2的方式取出第一第二个参数,$#为参数数量,$*为所有参数。commands
returnvalue
}
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。