由 Python语言 到 Shell
小标 2018-12-10 来源 : 阅读 1062 评论 0

摘要:本文主要向大家介绍了由 Python语言 到 Shell,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助。

本文主要向大家介绍了由 Python语言 到 Shell,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助。

入职半年,进步并不是想象中的那么大,虽说在任何地方工作都其实是靠自己的努力、对技术的钻研,达到熟练、进而开拓其他领域等,还是需要不断的“偷懒”, 能使用编程语言实现的东西尽量编写脚本完成,而不是被一系列杂乱的事影响对工作的完成和自己的进步。最近的总结输出也不够多,其实是没有刻意的创造练习的机会,对自己掌握知识是不利的,看上去总结输出很耗费时间,但是当“输出总结”公布在互联网上,其实它就成为了一个作品,是作品就有好坏、就有影响力强弱。“作品”事实上扮演着见证者的角色,你的进步或是你的退步,你的关注点等鉴于入职之前对很多东西都不是很懂,比如 Liunx, shell ...最近做的工作都是在频繁的重复工作,所以借着这个契机还是入手了下shell 脚本,发现有编程基础,其实这些很容易入手,编写一些简易的脚本完成一些重复性工作,既简约了时间又可以保证正确率,手动操作,总是会出现部分错误的。学新东西是这样的:花80%的时间攻克20%的核心知识借鉴已经熟悉的知识点来理解陌生的知识点反复所以这篇文章借鉴Python 的知识来理解Shell 的语法。暂且叫简易入门吧。0. 编程语言王垠写过一篇文章  如何掌握所有的程序语言 ,毕竟是大神, 虽然对于普通人来讲智商平平,精力有限,难以掌握所有程序语言,甚至难以掌握一门程序语言,但是看完文章难道不应该受到些启发吗。重视语言特性,而不是语言。假如让你实现一门编程语言,你觉得要包括些什么? 语言特性,再加上些特殊的语法。各程序语言语法各异,但其实都是在按照程序发明者规定的语法进行组装代码,实现目标。所以其实程序语言最基础的就是语言特性:比如:变量:各种类型:整型、字符串、数组...循环语句:if 判断,for 循环函数: 参数、返回值算术运算、逻辑运算等...就这几个点:应该可以实现一个简易的编程语言了。那下面我们就按上面的几点来学习。先学习理解 python 中的用法。1. python 例子python 下后缀名.py如何运行 python 代码交互式编写.py 脚本python *.py如何传递参数python *.py argone argtwo如何在脚本中使用传入的参数sys.argv是个列表:[文件名, argone, argtwo ... ]如何使用条件或者循环if, while, forif a==b:    print aelse:    print bfor i in range(5):    print i如何定义函数def, 参数、返回值def hello(number=0):
    number = 1
    print "hello %s" %number变量定义var=""list_example=[]dict_example={}int_example = 22. shell 例子是什么shell scripts 的编写核心语法使用Linux 开发的话,在终端下敲的命令都是通过shell 和 linux 内核进行交互,完成响应的这么一个过程,而且shell 有各种各样的版本,语法有差异。这个很容易理解,语言特性就这些,但编程语言却这么多。所以还是入手最经典的bash,也是linux 默认的shell。shell  类似于python 中的交互式下敲代码。shell scripts 类似于 python 中编写的py脚本下代码的集合。下面照着python 下的那几个例子来演示 shell 下如何操作shell 下后缀名.sh如何运行chmod +x sh01.sh./sh01.shbash sh01.sh如何传递参数./sh01.sh argone argtwo如何在脚本中使用传入的参数对文件执行传入参数:比如:./sh01.sh argone argtwo$0 : 表示文件名  比如 sh01.sh$1 : 表示第一个参数 比如 argone$n : 表示第n个参数 比如 argtwo$# :表示传入参数的格式在函数定义中使用参数:$# : 表示传入的参数的个数$1 : 表示函数中的第一个参数$n : 表示函数中的第n个参数如何使用条件或者循环if ... then ... fifor ... in ... do ... done如何定义函数function(){}变量var_str="123"var_int=123var_list=(1 2 3)shell 演示实例一个脚本包括什么?变量函数打印注释循环、判断...熟悉相关的基本语法:shell 基本语法#!/usr/bin/env bash# example one: varvar_one="xiewei"   # 定义一个变量,是字符串

echo -e ${var_one}  # 打印这个变量

echo -e ${var_one}"wenlimin" # 字符串的拼接

echo -e ${#var_one} # 得出字符串的长度

echo -e ${var_one:0:5} # 提取字符串的前5个字符# example two: argsecho $0  # 打印当前脚本的文件名# 表示这个脚本需要传入两个参数才能正确执行if [ $# -ne 2 ]; then
    echo -e "usage:  ./$0 arg_one arg_two"
    exit 1
fi# 传入的两个参数arg_one=$1
arg_two=$2

echo -e "The first argument is: ${arg_one}"
echo -e "The second argument is: ${arg_two}"# example three: functionprint_args(){
    arg_fun_one=$1
    arg_fun_two=$2
    echo -e "function first argument is: ${arg_fun_one}"
    echo -e "function second argument is: ${arg_fun_two}"
    return $((${arg_fun_one} + ${arg_fun_two}))
}
print_args 4 5
echo -e ${?}# example four: list# 读取当前文件下的所有文件 file_listk=0
for i in `ls`
do
    file_list[k]=${i}
    k=$(( k + 1))
done

echo -e "The len of file list:"
echo -e ${#file_list[@]}
echo -e "show file list:"
echo -e ${file_list[@]}# example five: create file# 判断是否存在文件,不存在就创建create_file="shell_05.sh"
file_flag=`ls | grep ${create_file}`

echo -e ${#file_flag}

if [ -z ${file_flag} ]
then
    touch ${create_file}
else
    echo -e "${create_file} exist"
fiimport sysimport subprocessimport os

print(sys.argv[0][-12:])# 返回传入的参数def get_sys_agrv():
    if len(sys.argv) <= 1:
        print("usage: python " + str(sys.argv[0][-12:]) + "argument")        return 0
    else:
        file_name, *arg = sys.argv        return file_name, arg# 执行shell 脚本def syscall(cmd):
    cmd = str(cmd)
    result = subprocess.Popen(
        cmd,
        shell=True,
        stdout=subprocess.PIPE,
        stderr=subprocess.PIPE
    )
    out = str(result.communicate()[0])    if result.returncode != 0:        raise Exception("error")    return out# 传入文件名,判断是否存在,否则创建def create_file(file_name):
    cmd = None
    if type(file_name) != str:        return 0
    if os.path.isfile(file_name):
        print(str(file_name) + "exists")    else:
        cmd = "touch " + str(file_name)
        syscall(cmd)        return 1# 读取当前文件夹下文件的列表def file_list(pathdir):
    cmd = None
    list_file = None
    if not os.path.exists(pathdir):        return 0
    else:
        cmd = "ls " + str(pathdir)
        rt = syscall(cmd)
        list_file = rt.strip('\n').split('\n')        return list_file

print(file_list())一句话总结:工作中的重复性工作都应该以代码的方式实现自动化操作,即节约时间又保证正确性。同时创造机会刻意练习。

本文由职坐标整理并发布,希望对同学们学习Python有所帮助,更多内容请关注职坐标编程语言Python频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程