linux下,简单一行代码提高脚本的健壮性

前言

新来的美女同事,拿她写的脚本向我请教时,我证实了程序猿经常说的一句话:OMG,这么狗屎的代码居然是我写的!!!

问题描述:

在linux/unix写脚本时,我大多习惯在第一行加上(或许还有一大班跟我一样习惯的人):

#!/usr/bin/bash
或者
#!/usr/bin/perl
或者
#!/usr/bin/python……………………

用于操作系统执行这个脚本的时候,调用/usr/bin下的bash/perl/python解释器。

但是,这时存在两个小小问题:

1、本机的bash/perl/python……,你是否确定是安装在上述路径?

2、如果将你写的脚本移植到其它机器,能否正确运行?

改进建议:
#!/usr/bin/env bash
或者
#!/usr/bin/env perl
或者
#!/usr/bin/env python
……………………

改进后的用法是为了防止用户没有将解释器安装在默认的/usr/bin路径里。当系统执行这一行的时候,首先会到env设置里(环境变量PATH)查找python的安装路径,再调用对应路径下的解释器程序完成操作。

简单的改进,避免了找不到解释器的问题,提高了程序的健壮性。

时间: 2024-08-03 16:05:55

linux下,简单一行代码提高脚本的健壮性的相关文章

Linux下简单的socket通信实例

Linux下简单的socket通信实例 If you spend too much time thinking about a thing, you’ll never get it done. —Bruce Lee       学习网络编程也一段时间了,刚开始看<UNIX网络编程>的时候,觉得这本厚厚的书好难啊!看到后来,发现并没有想象中的那么难.如果你是新手,建议你看到第二部分结束后,开始着手写代码.不写代码肯定是不行的.看100遍也没有敲一遍实现一遍来的清楚.敲完以后,带着问题去看书,你会

一个linux下简单的纯C++实现Http请求类(GET,POST,上传,下载)

目录 一个linux下简单的纯C++实现Http请求类(GET,POST,上传,下载) Http协议简述 HttpRequest类设计 请求部分 接收部分 关于上传和下载 Cpp实现 关于源码中的Logger 使用示例 一个linux下简单的纯C++实现Http请求类(GET,POST,上传,下载) 最近写了点关于Http上传下载文件相关的,于是今天整理下代码. Http协议简述 HttpRequest类设计 使用示例 Http协议简述 协议:网络协议的简称,网络协议是通信计算机双方必须共同遵从

Linux下简单的取点阵字模程序

源:Linux下简单的取点阵字模程序 Linux操作系统下进行简单的图形开发,经常会用到取字模的软件,但是Linux并没有像Windows下的小工具可用,我们也并不希望为了取字模而频繁地切换操作系统.(由于是完全由C语言编写,所以不需要任何修改,这个字库同样可以用在嵌入式环境的Windows操作系统下面) 本人结合网上的资料,对这个问题进行了总结,整理了代码,供有需要的朋友使用我参考.转载请注明出处:http://blog.csdn.net/weiwang876253631/article/de

Linux 下 简单客户端服务器通讯模型(TCP)

原文:Linux 下 简单客户端服务器通讯模型(TCP) 服务器端:server.c #include<stdio.h> #include<stdlib.h> #include<errno.h> #include<string.h> #include<sys/socket.h> #include<sys/types.h> #include <stdio.h> #include <unistd.h> #inclu

iOS下用一行代码实现tableview(collectionview)的parallax效果

效果和https://github.com/jberlana/JBParallaxCell一样.实现cell的滚动视差. 原理很简单,就是一个等比公式  cell的图片位置 / cell图片可以滑动的总长 = cell在table中的位置 / cell 可滑动总长  实现方法: 1> 在cell的UIImageView上添加父视图UIView,clipsToBounds设置为yes,用来剪切UIImageView,为其限定大小. 2>在vc的 -(void)scrollViewDidScrol

linux下简单抓包分析

有时候会遇到一些问题需要我们来抓包分析,当手头又没有专业的抓包工具的时候,可以用tcpdump来替代一下(一般的发行版都自带这个工具) 比如我们要分析一下eth0接口下跟192.168.7.188 这个目的IP地址22端口的发包情况 tcpdump -i eth0 dst 192.168.7.188 and port 22 tcpdump -i eth0 dst 192.168.7.188 and port 22 tcpdump: verbose output suppressed, use -

Linux下简单基本操作【备查】

Linux下简单基本操作[备查]①解压文件指令 tar zxvf filename (filename文件名)②查看修改文件内容 vi filename i 进入修改模式 修改后保存步骤 esc——shift+: ——wq(保存退出 q直接退出)③文件删除命令rm 命令格式:rm [fir] 文件或目录 参数说明: -f:强制删除 -i:交互模式,在删除前询问用户是否操作 -r:递归删除,常用在目录的删除 如删除/test目录下的file1文件,可以输入以下命令: rm -i /test/fil

转载: linux下创建svn代码库

linux下创建svn代码库 1.安装svn客户端 2.创建svn代码库 1.安装svn客户端 1.1.使用命令安装 1)CentOS $ yum install subversion 2)ubuntu sudo apt-get install subversion 1.2.源码安装 http://www.cnblogs.com/fengbohello/p/4142810.html 2.开启svn服务进程 2.1.我的习惯是把代码仓库放在/opt/svn目录下,所以先创建目录/opt/svn $

Linux下编译C代码,出现tan函数报错的情况

undefined reference to `tan' 但是已经包含了头文件 <math.h>了,可还是报错,说是找不到tan 这个问题的原因不是很清楚, 但是网上给出的方案,就是编译的时候 加上参数 -lm 有说l表示Lib ,m表示 math.h  , ****************************************************************************************************** 以下是一些说明 使用math.h