检测三种不同操作系统的Bash脚本
检测三种不同操作系统(GNU/Linux, Mac OS X, Windows NT)的Bash脚本。
设计:
1、使用“uname”命令获取系统信息,带上“-s”参数个打印内核名称。
2、使用“expr”和“substr”处理内核名称字符串。
3、逐个条件判断即可。
脚本:
#! /bin/sh
if["$(uname)"=="Darwin"];then
# Mac OS X 操作系统
elif["$(expr substr $(uname -s) 1 5)"=="Linux"];then
# GNU/Linux操作系统
elif["$(expr substr $(uname -s) 1 10)"=="MINGW32_NT"];then
# Windows NT操作系统
fi
注意:
1、在脚本的开头,使用“#!/usr/bin/env bash”替换“#!/bin/sh”,防止在不同操作系统上“/bin/sh”链接到不同版本的默认shell。比如在Ubuntu 64 bits 12.04操作系统上,可能会出现“unexpected operator”的错误。
2、Mac OS X10.6.8 (Snow Leopard) 操作系统上默认没有“expr”程序,除非有单独安装过,所以在脚本中仅使用“uname”。
检测三种不同操作系统的Bash脚本的更多相关文章
- 09_Hadoop启动或停止的三种方式及启动脚本
1.Hadoop启动或停止 1)第一种方式 分别启动 HDFS 和 MapReduce,命令如下: 启动: $ start-dfs.sh $ start-mapred.sh 停止: $ stop-ma ...
- python写一个能生成三种一句话木马的脚本
代码: import time import os from threading import Thread import optparse def aspyijuhua(): try: juy=op ...
- unity中三种调用其他脚本函数的方法
第一种,被调用脚本函数为static类型,调用时直接用 脚本名.函数名()第二种,GameObject.Find("脚本所在的物体的名字").SendMessage(" ...
- 高级Bash脚本编程指南(27):文本处理命令(三)
高级Bash脚本编程指南(27):文本处理命令(三) 成于坚持,败于止步 处理文本和文本文件的命令 tr 字符转换过滤器. 必须使用引用或中括号, 这样做才是合理的. 引用可以阻止shell重新解释出 ...
- shell脚本中调用另一个脚本的三种不同方法(fork, exec, source)
fork ( /directory/script.sh) fork是最普通的, 就是直接在脚本里面用/directory/script.sh来调用script.sh这个脚本. 运行的时候开一个sub- ...
- Shell脚本的三种执行方式
Shell脚本的执行方式可以有以下几种: 方式一: ./script.sh # 利用小数点来执行 方式二: sh script.sh 或 bash script.sh # 利用bash(sh)来执 ...
- 在shell脚本中调用另一个脚本的三种不同方法(fork, exec, source)——转载
原文链接:http://blog.chinaunix.net/uid-22548820-id-3181798.html fork ( /directory/script.sh) :如果shell中包含 ...
- 启动bash shell的三种方式下,检查的启动文件
启动bash shell的三种方式 1.登录时当做默认登录shell 2.作为非登录shell的交互式shell 3.作为运行脚本的非交互shell 一.登录shell 登录Linux系统时,bash ...
- Linux 中执行Shell 脚本的方式(三种方法)
Shell 脚本的执行方式通常有如下三种: (1)bash script-name 或者 sh script-name:(2)path/script-name或者./script-name:(3)so ...
随机推荐
- 将数据库从Oracle迁移到SQL Server
参考链接:http://www.360doc.com/content/15/0310/14/9260775_454038517.shtml
- LeetCode(57):插入区间
Hard! 题目描述: 给出一个无重叠的 ,按照区间起始端点排序的区间列表. 在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间). 示例 1: 输入: i ...
- 通过Headless模式执行selenium脚本
我们在通过Selenium运行自动化测试时,必须要启动浏览器,浏览器的启动与关闭必然会影响执行效率,而且还会干扰你做其它事情(本机运行的话) Chrome Headless模式 Python Sele ...
- 步步为营-23-通过GridView实现增删改
说明:把xml中的数据放入到数据源list中然后显示到gridview中,参考上一节内容 1 UI页面 2创建student类 public class Student { public int ID ...
- ajax请求返回json字符串/json对象 处理
1. 返回json字符串如何处理 $.ajax({ url:xxx, success:function(date){ }, error:function(){ } }); 通过最原始的返回: Prin ...
- openstack学习-nove控制节点部署(四)
nove在openstack非常重要,主要负责创建虚拟机 nova计算服务 API :负责接收和响应外部请求.支持openstack API,EC2 API Cert:负责身份认证EC 2 Sched ...
- 为Kubernetes集群部署本地镜像仓库
目录贴:Kubernetes学习系列 经过之前两篇文章:Centos7部署Kubernetes集群.基于kubernetes集群部署DashBoard,我们基本上已经能够在k8s的集群上部署一个应用了 ...
- 6-17 看图写树 uva10562
非常好的dfs题 有很多细节 关于‘ ’ ‘0’ ’\n‘ 的处理 他们都属于isspace函数 其中 while(buf[x+2][i]=='-'&&buf[x+3][i] ...
- 条件随机场之CRF++源码详解-开篇
介绍 最近在用条件随机场做切分标注相关的工作,系统学习了下条件随机场模型.能够理解推导过程,但还是比较抽象.因此想研究下模型实现的具体过程,比如:1) 状态特征和转移特征具体是什么以及如何构造 2)前 ...
- 谈谈MySQL无法连接的原因和分析方法
[可能的原因] MySQL无法连接的原因有很多,比如: 1.数据库的请求量突增,实例连接数超过max_connections,或用户连接数超过max_user_connections, 这种情况连接时 ...