用vim即可。
首行指定python解释器。也就是python.sh位置。
#!/usr/bin python
类似上边指定python位置。
其它写法,遵循python语法即可。
作者:匿名用户
链接:https://www.zhihu.com/question/30548640/answer/48787538
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
题主问的是调用命令,那当然是 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)
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 验证就是比资本主义快。啊我忘了一点,这个问题本来就是讨论调用命令的,你跟我扯一般计算干啥?不要问我是谁,我只是个买辣条的。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。