Linux下编写脚本Shell和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 验证就是比资本主义快。
温馨提示:内容为网友见解,仅供参考
无其他回答

Linux下编写脚本Shell和Python的区别
严格的讲, shell不是一种编程语言, 但是shell有自己的控制流结构(判断,循环,选择),运算以及函数等编程语言特性, 加上shell命令组织在一起构成脚本, 能够完成一般编程语言做到的事情.perl和python相比于shell, 是严格意义上的编程语言. 功能比shell当然会复杂很多, 语法上也稍微复杂一些.perl最大的优势在...

python和shell有什么区别?
1、Python不需要记忆太多的命令,语法简单,有C基础的人学起来非常容易上手,易于使用;而shell要学的命令有很多,但常用的命令不是很多。2、Python可移植性好,它的标准是统一的,不会出现因为平台的不同运行结果不同,但shell的命令在各个平台上有些不一样。3、Python更加强大,shell是一种命令语言,...

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

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

perl 、shell、python三种脚本语言那种好学、易用
1、适用不同:shell是操作linux的基本,是必须学的。学shell就是学linux命令。perl有强大的正则表达式支持,对于文本处理非常强悍,玩linux不得不学。python作用一种面向对象的,能作为linux脚本的语言,学好之后能帮你很好地完成工作。2、特点不同:Perl是一种能完成任务的语言。从一开始,Perl就设计成...

shell和python区别
Shell是“提供使用者使用界面”的软件,是用C语言写的程序,属于一个命令语言,也是个编程语言。Shell脚本是shell写的脚本程序,我们一般说的shell就是指shell脚本。而Python同Java、C、PHP一样是一门计算机编程语言,但它是一个解释型、面向对象的语言。shell是做系统管理的脚本,能力有限,多半是用于...

...已经很强大了,为什么在 Linux 操作还需要 Python,Ruby
1.shell的语法和结构比较简单,易于掌握 2.学习和使用也比较方便,上手比较容易 3.常用命令也比较好记,不清楚的情况下,可以通过man命令迅速找到相关的说明 4.shell是解释型语言,运行之前不需要编译 5.文本处理方面,主要依赖于awk、sed这两把尖刀,能够方便快捷地处理相当复杂的问题 6.程序开发的效率...

shell和python脚本学哪个?
各有优势,个人偏向python 跨平台 面向对象,模块丰富,在解决一些复杂问题时方便点,除了当脚本用也能写一些比较大的应用程序;代码可读性好,易写易维护 不过最终还是看工作需要吧

为什么 Python没有取代 Bash 成为系统 Shell
作为一个编程语言,而不是一个命令行工具。python不具备shell这样的强的交互,通用性,小巧 ,权限管理,批处理,复杂的管道,安全,高效等等优点。不过shell支持的脚本很多已被python代替。所以在linux的系统初始化,运维管理中大量可以看到python脚本。 对于一个python老手来说,用shell脚本编程不如直接写个...

脚本是用什么语言写的
Shell脚本则在Unix和Linux系统中扮演着重要角色。通过编写Shell脚本,开发者能够自动化执行一系列系统命令,提高工作效率。Shell脚本不仅能够简化复杂的命令操作,还能通过循环、条件判断等结构实现更复杂的逻辑处理。此外,Shell脚本还可以与Perl、Python等其他语言结合使用,实现更强大的功能。

相似回答