知行编程网知行编程网  2022-12-02 22:00 知行编程网 隐藏边栏  9 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于python和shell像吗的相关知识,包括python和shell,以及gtaol源代码这些编程知识,希望对大家有参考作用。

python和shell相似吗?

python和shell都是我们经常使用的脚本语言。平时主要用python写一些小任务,在使用liunx系统部署任务的时候用shell比较多。由于两者有一些相似之处,时间长了很容易混淆,所以这里介绍一下两者的用法区别。


变量

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

var=“hello”
print var
# hello

在shell中定义一个变量,只需要变量名,要使用变量的值,需要加上$符号,例如:

var="hello"
echo $var
# hello


数组的定义

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

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

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

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


注释

python和shell都可以用#号添加单行注释,python可以用“'comment”'添加多行注释。


逻辑判断


条件的定义

在python中,所有的值都被解释为True,除了所有的空值都被认为是False,其中空值包括:None、0、""、()、{}、[]和False,下面是一个例子 。

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

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

* x is not y

* x in y x在y集合中

* x not in y

逻辑预算法用and,or,not.

外壳的概念非常不同。它使用测试命令来执行条件测试。通常写成[条件]的形式。注意方括号两边必须有空格。它支持三种类型的测试:

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

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

* 文件比较需要使用短命令,如-e file 判断文件是否存在

逻辑运算符&&,||来连接不同的[ condition ]

另外,高级数学表达式推荐使用((表达式))逻辑判断,可以使用自增++、移位运算符<<、位运算符&、逻辑与&&等。

高级字符串判断使用[[表达式]]逻辑判断,可以使用类似[[ $teststr== r* ]]等正则表达式来判断以r开头的字符串

shell的数值计算推荐使用$[expression]的方法,使用echo "expression" | 的方法bc 获取浮点数计算的计算值


if else

python中if else的使用如下,在条件语句后加冒号,用缩进分隔语句块

if condition:
    statement
elif condition:
    statement
else:
    statement

它在外壳中是不同的。它的 if else 用法如下。它使用 then 和 elseif 或 fi 来定义语句块。理论上不需要缩进。

if [ condtion ]
then
 statement
elif [condtion]
then
 statement
else
 statement
fi


for循环

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

for item in sequence:
    statement

shell中for的使用方式类似

for item in list
do
statement
done

其中,shell取项分隔符的全局变量是IFS(internal field separator),它的默认值是空格、制表符和换行符。因此,如果需要按行处理,忽略空格,则需要更改IFS的值。

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

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


while循环

python的while写法,如下:

while condition:
    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()
with open("finename","w") as myfile:
    myfile.write("line\n")

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

使用shell

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


函数

python的函数如下形式:

def functionname(params):
    '函数文档'
    statement
    return value

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

shell中函数形式

function functionname {
    commands
    return value
}

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

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享