python与shell语法

作者: Blues_rat | 来源:发表于2018-02-28 15:32 被阅读13次

    python与shell之间的语法联系:

    变量

    python定义和使用只需要使用变量名,例如
        var="hello"
        print var
    
    shell定义变量只需要变量名,而使用变量的值则需要加$符号,例如
        var="hello"
        echo $var
    

    数组的定义

    数组的定义
    python中没有数组的概念,但是有list,tuple,dict等可以代替其功能,声明一个list并使用其中的一个元素如下
    
        numbers=[1,2,3,4,5]
        print numbers[0]
        print numbers
    
    shell中只有一维数组,其声明和使用方法如下
        numbers=(1 2 3 4 5)
        echo ${numbers[0]}
        echo ${numbers[*]}
    

    注释

    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语法

    if else
    python中的if else使用方式如下,条件语句后加冒号,并且以缩进划分语句块
    
    if a==0:
        print 1
    elif condition:
        statement
    else:
        statement
    
    
    shell中则不同,其if else使用方式如下,它使用then和elseif或fi来界定语句块,理论上不需要缩进
    
    if [ a==0 ]
    then
     echo 1
    elif [condtion]
    then
     statement
    else
     statement
    fi
    

    for循环

    python的for循环使用如下,仍然用缩进划分语句块
    
        a=[1,2,3]
        for item in a:
            print item
        
    shell中for的使用方式类似
        a=("1" "2" "3" "4" "5")
        for item in ${a[@]}
        do
            echo $item
        done
    
    其中shell取item的分隔符全局变量为IFS(internal field separator),其默认值为空格,制表符,换行符,所以如果需要按行处理而忽略空格的话需要改变IFS的值 
    另外shell还支持c语言形式的for循环,它使用双小括号来完成,形式如下
    
        for (( i=1; i<=10;i++))
        do
         statement
        done
    

    while循环

    python的while写法如下
    a=1
    while a>0:
        print 1
    
    shell的while写法如下
    a=1
    while [ $a>0 ]
    do
     echo 1
    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
    或者
    for line in `cat  filename`
    do
    echo $line
    done
    

    函数

    python的函数如下形式
    
    def functionname(params):
        value=params
        return value
    
    其中函数文档可以通过functionname.doc获得 
    shell中函数形式
    
    function functionname {
        echo $aa
        return value
    }
    
    使用变量获取返回值,参数通过函数functionname param1 param2的方式传递,通过$1,$2的方式取出第一第二个参数,$#为参数数量,$*为所有参数。
    

    Python与Shell交互

    在Python中使用shell
    import os
    os.system('cat /proc/cpuinfo')
    os.popen('cat /proc/cpuinfo')
    import commands
    commands.getoutput('cat /proc/cpuinfo')
    

    参考:http://blog.csdn.net/u013935164/article/details/79051792

    相关文章

      网友评论

        本文标题:python与shell语法

        本文链接:https://www.haomeiwen.com/subject/sxxixftx.html