检测三种不同操作系统的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 ...
随机推荐
- lr使用linux Generator测试https莫名报 SSL protocol error when attempting to connect with host
接收一个性能测试任务,各种原因需要使用linux agent产生压力.诡异的事发生了,同样脚本windows回放成功,使用linux agent报如下错误,脚本回放失败. Action.c(33): ...
- jQuery性能优化指南
总是从ID选择器开始继承在jQuery中最快的选择器是ID选择器,因为它直接来自于JavaScript的getElementById()方法. 例如有一段HTML代码:代码 <div id=&q ...
- eclipse 更换主题
更换系统自带主题 依次点击 window->preferences->General->Appearance->Theme 选择主题 下载eclipse marketplace ...
- ERP完善合同起草(二十八)
前端的代码: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="CRMCont ...
- django 如何动态使用Q查询函数
这个Q和F用得少, 需要时,总是独立的存在于那时,显得有些突兀, 这次想将filter,order,Q集合在一起, 查询了很多资料,还是有一些困难, 但即可以将Q查询比较优雅的动态生成. 比如: # ...
- Git强制更新本地库和冲突解决
1.You have not concluded your merge. (MERGE_HEAD exists) 本地有修改和提交,如何强制用远程的库更新.出现这种情况一般是git本地有commit, ...
- 练习|Django-单表
结构目录 页面展示: 1创建Django,创建app01 在modules.py添加 class Book(models.Model): id=models.AutoField(primary_key ...
- 关于make: *** No rule to make target `clean'. Stop.这个莫名其妙问题的解决方法
执行make编译命令总报错,后来试试make clean命令也不行,报下面的错. make: *** No rule to make target `clean'. Stop. 真是莫名其妙的错误, ...
- windows下redis安装和配置
windows下redis安装和配置 redis介绍 Redis是一个开源,高级的键值存储和一个适用的解决方案,用于构建高性能,可扩展的Web应用程序. Redis有三个主要特点,使它优越于其它键值数 ...
- Java设计模式从精通到入门一 责任链模式
一直都想对设计模式有一个深刻的认识,这样对于阅读源码的时候就不会那么吃力了.于是有了想要记录下设计模式的笔记.打算从自己不怎么熟悉的设计模式开始写,里面穿插着一点自己的想法,希望自己写完后,会又一 ...