Linux下编写脚本Shell和Python的区别

来自:学习    更新日期:早些时候
Linux下编写脚本Shell和Python的区别~

shell脚本只能用于系统日常维护和管理,而Python则可以做很多事情,可以编写应用程序,包括图形界面的应用程序,以前有一个百度云Linux客户端叫bcloud就是用Python编写的,是图形界面,而shell脚本只能在shell中运行。还有,编写大一点的Python程序还要考虑到软件工程,让代码容易维护、易读性好、模块化,编写代码文档等等,而编写shell脚本一般不需要考虑这些。

shell是用来进行系统管理的脚本,能力有限,多半用于自动化任务,并不是系统级的编程语言。python是系统级的编程语言,也就是说,你用python能干你想干的几乎所有事情。

题主问的是调用命令,那当然是 POSIX 系 Shell 不罗嗦。如果你要个调用命令还算可以并且写起来舒服点的语言,建议找 Ruby 去。


外偏题去说 Shell 不是系统级编程语言的我也是醉了,我还真没看到过没有 Shell 能干活的 Unix/Linux 家伙的,就连你个
sysVinit 也得靠 shell 啊。并且你还触碰到了 Unix 狂魔的 G 点——Shell 用户万能的胶水能力被丢到哪里去了?随便起一个
Python Shell 抓住 stdin 灌或者 /tmp 丢个文件喂,你能干的我全都能干(这是认真的,参见 makeself 等自解压
shell 脚本形式)。

讲 Google Style Guide 的算是靠了点谱(虽然还是丢下了调用命令这回事),问题是 Google 还不许用 C++ STL 呢你怎么不说?Bash 这玩意,认真写的人文件头都 source 一组小库的。

嗯上面三段讲的是调用命令这个需求、最小依赖这个优点和语言本身不常被严肃使用(放着功能禁止用)这回事。

接下来的内容严重不友善,涉及大量打岔,请题主手动忽略。大概大家都看得出我和生意人在微博上有些观点上的矛盾,我也承认匿名这样黑不大好。但是这和用 Shell 开命令搞管道胶水一样爽啊,我怎么会放弃?

稍有常识的人都能看出,LibreWindows 冒泡排序的 shell 脚本完全不是用和 py 同一种风格写出来的。我在这里做了较为忠实的翻译:
#!/bin/bash
orig=(12 5 13 8 9 65)

# paramaters[] -> list[]
bubble(){
list=("$@")
local size=$((${#list[@]}-1)) i sorted=0 t
until ((sorted)); do
sorted=1
for ((i=0;i<size;i++)); do
if ((list[i] > list[i+1])); then
sorted=0;
t="${list[i]}" list[i]="${list[i+1]}" list[i+1]="$t"
fi
done
done
}

bubble "${orig[@]}"
echo ${list[@]}
: << _NOTES
Real unix-shelly way:
sorted=$(for i in ${orig[@]}; do echo $i; done | sort -g)
sorted=$($sorted)
echo ${sorted[@]}
_NOTES

Bash 的完整版本可以使用 declare -n 创建引用类型的变量,但是 Cygwin 上的 bash 没编译进去我也就先不用吧。


请阁下注意一点,数组本非古老的 Shell 所支持的,She-bang 不应调用 /bin/sh 而应使用 /bin/bash 执行。Bash
带着镣铐做这种拓展还要拿来说就算了,还强行丑化代码不开高亮接着便是叫人“感受一下”,大概也是先生您在微博上常用的套路了。另外我承认论现代编程
Shell 不如 Python,也承认 WoSign/CNNIC 验证就是比资本主义快。

啊我忘了一点,这个问题本来就是讨论调用命令的,你跟我扯一般计算干啥?
不要问我是谁,我只是个买辣条的。

shell脚本只是一种简单的语言,通常用来写一些系统维护和实用工具,比如批量检索文件这样的操作,它的功能主要依靠在shell脚本中启动其它独立的程序来完成,比如find、grep等Linux常用程序。而Python是一种完全的现代编程语言及环境(如支持面向对象编程),从功能上讲它可以完成上述的shell脚本的所有功能,但更重要的是python用于科学计算、网络服务器应用等复杂应用中

shell脚本是通过shell解释器来执行的,常见的shell有bash,sh等, python脚本本质上也是shell脚本的一种,但是python脚本第一行有一个标示性的语句: #!/usr/bin/env python 这一行就是告诉shell解释器以下代码需要通过python解释器来执行。

双方调用的系统命令不同,一个使用bash或者csh,一个使用python,但是都可以实现相同的功能


Linux下编写脚本Shell和Python的区别视频

相关评论:
  • 13537582518学习Linux编写Shell脚本linux编写sh脚本
    鲁影婕首先,了解Linux系统中shell的角色,shell是操作系统中的用户界面,shell脚本即在shell中编写的脚本可以让用户完成更多的操作,而且可以自动执行,减少操作的重复性,从而提高工作效率。其次,要学习Linux的shell脚本的语法,可以先学习基本的shell命令,而且要熟练掌握shell编写的一些语句,并且记住一些常用的示例...

  • 13537582518linux创建shell脚本文件linux创建shell脚本
    鲁影婕用vim编辑器创建一个shell脚本文件,在脚本文件里输入需要执行的shell命令,保存脚本文件,并赋执行权限,执行脚本文件即可。shell脚本运行命令?在linux下shell脚本执行命令主要有四种方式,具体介绍如下:方式一:切换到shell脚本所在的目录(也叫工作目录)执行shell脚本,具体代码是:cd\/data\/shell .\/hello....

  • 13537582518linux下编写一个shell脚本 每天0点 定时执行某一可执行程序test。 刚...
    鲁影婕在某个时间段执行某个程序,准确的说是“定时任务”,我这里介绍2中linux(ubuntu)下定时执行python脚本的方式。方法一:准备好定时启动的脚本auto.py 用root权限编辑以下文件 在文件末尾添加以下命令 以上代码的意思是每隔两分钟执行一次脚本并打印日志。crontab编写解释 基本格式 举例说明 方法二:APSchedu...

  • 13537582518linux下如何写个SHELL脚本,每天执行这么几句命令:
    鲁影婕1、登录CentOS7系统,打开终端,输入命令env shell打印出shell进程的环境变量。2、本地变量只存在当前shell进程。新建一个本地变量MYVAR=myvalue注意等号两边不能有空格。3、查看本地变量set查看指定本地变量set | grep MYVAR。4、导出本地变量为环境变量export MYVAR。5、删除本地变量或环境变量unset MYV...

  • 13537582518在linux下编写shell脚本,判断当前登录用户是否为学号命名的用户_百度知 ...
    鲁影婕!\/bin\/bash id="123"[ `whoami` = "$id" ] && echo 'yes' || echo 'no'例如:sh check.sh !\/bin\/sh echo "Input username:"read username if grep -q $username \/etc\/passwd then awk -F: \/$username\/'{print $7}' \/etc\/passwd else echo "$1 not local user"fi ...

  • 13537582518linux 怎么进入shell编程模式
    鲁影婕1、连接上相应的linux主机,进入到等待输入shell指令的linux命令行状态下。2、在linux命令行下输入shell指令:vi test.shell。3、最后,按下回车键执行shell指令,此时发现用vi命令成功进入了shell编程模式中。

  • 13537582518Linux Shell脚本系列教程:Shell入门
    鲁影婕编写脚本通常使用某种基于解释器的编程语言。shell脚本本质上就是一些文本文件,我们可以将一系列需要执行的命令写入其中,然后通过shell来执行。在这里我们介绍的是Bash shell(Bourne Again Shell),它是目前大多数GUN\/Linux系统默认的shell环境。书中所有的实验都是在Ubuntu14.04 LTS环境下完成的。二、基本...

  • 13537582518Linux下编写脚本Shell和Python的区别
    鲁影婕shell是linux内核和用户命令的沟通桥梁, 你输入的任何命令都是通过shell去解释, linux内核才知道你要做什么 严格的讲, shell不是一种编程语言, 但是shell有自己的控制流结构(判断,循环,选择),运算以及函数等编程语言特性, 加上shell命令组织在一起构成脚本, 能够完成一般编程语言做到的事情.perl和python...

  • 13537582518怎么写LINUX的SHELL?
    鲁影婕在进行linux测试时编写脚本是必不可少的,Shell脚本的名称可以随便定义,也不要什么后缀名,例如可以写abc,smartzip这类名称,运行时只要键入.\/smartzip就能运行脚本了。。每行命令开头处不用就空格也行。。第1部分. Linux 脚本编写基础1.1 语法基本介绍1.1.1 开头程序必须以下面的行开始(必须方在文件的第一行):#!

  • 13537582518linux 系统怎么编写一个shell脚本,检查一个100台设备的是否都具有某项...
    鲁影婕等来编写我们的shell程序。程序必须以下面的行开始(必须方在文件的第一行):!\/bin\/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用\/bin\/sh来执行程序。当编辑好脚本时,如果要执行该脚本,还必须使其可执行。要使脚本可执行:chmod +x filename 然后,您可以通过...

  • 相关主题精彩

    版权声明:本网站为非赢利性站点,内容来自于网络投稿和网络,若有相关事宜,请联系管理员

    Copyright © 喜物网