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

 我来答
就烦条0o
2018-07-26 · 知道合伙人软件行家
就烦条0o
知道合伙人软件行家
采纳数:33315 获赞数:46492
从事多年系统运维,喜欢编写各种小程序和脚本。

向TA提问 私信TA
展开全部
题主问的是调用命令,那当然是 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 验证就是比资本主义快。

啊我忘了一点,这个问题本来就是讨论调用命令的,你跟我扯一般计算干啥?
不要问我是谁,我只是个买辣条的。
百度网友c7e1877
2016-07-25 · TA获得超过4670个赞
知道大有可为答主
回答量:4996
采纳率:81%
帮助的人:1444万
展开全部
shell脚本只是一种简单的语言,通常用来写一些系统维护和实用工具,比如批量检索文件这样的操作,它的功能主要依靠在shell脚本中启动其它独立的程序来完成,比如find、grep等Linux常用程序。而Python是一种完全的现代编程语言及环境(如支持面向对象编程),从功能上讲它可以完成上述的shell脚本的所有功能,但更重要的是python用于科学计算、网络服务器应用等复杂应用中
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tv...2@163.com
2016-07-25 · 超过234用户采纳过TA的回答
知道小有建树答主
回答量:506
采纳率:44%
帮助的人:180万
展开全部
shell脚本是通过shell解释器来执行的,常见的shell有bash,sh等, python脚本本质上也是shell脚本的一种,但是python脚本第一行有一个标示性的语句: #!/usr/bin/env python 这一行就是告诉shell解释器以下代码需要通过python解释器来执行。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yexicheng
2016-07-25 · TA获得超过1.2万个赞
知道大有可为答主
回答量:8857
采纳率:69%
帮助的人:7064万
展开全部
双方调用的系统命令不同,一个使用bash或者csh,一个使用python,但是都可以实现相同的功能
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式