一个简单的shell脚本

一个简单的shell脚本

编写

假设我想知道目前系统上有多少人登录,使用who命令可以告诉你现在系统有谁登录:

1.[KANO@kelvin ~]$ who
2.KANO tty1 2016-02-15 01:47 (:0)
3.KANO pts/0 2016-02-15 01:48 (kelvin)

当然在个人电脑上,所列出来的列表可能只有上面这么短。但是在一些大型、多用户的系统上,所列出的列表就可能很长。这个时候我们可以使用自动计算用户总数。wc是一个字数计算程序,它可以计算出行数(line)、字数(word)和字符数(character)。

我们用wc -l用以算出行数,表示已登录的用户数

1.[KANO@kelvin ~]$ who|wc -l
2.2

next,我们将此管道转变成一个独立的命令。

1.[KANO@kelvin ~]$ cat>nusers   #建立文件,使用cat复制终端的输入
2.who|wc -l #程序内容
3.^D #ctrl+D表示end-of-file
4.[KANO@kelvin ~]$ chmod +x nusers #让文件拥有执行的权限
5.[KANO@kelvin ~]$ ./nusers #执行测试
6.2 #输出结果

一个小型化shell脚本的典型代表开发周期:

  1. 直接在命令行(command line)上测试
  2. 找到能够完成工作的适当语法,再将它们放进一个独立的脚本里,并设置执行权限
  3. 直接使用该脚本

完善

我们的nusers shell脚本并非是编译型程序,因此当shell要求内核执行它时,内核将会报错”executable format file”(不是可执行的格式文件)。shell收到此报错信息时,才会启动一个新的/bin/bash副本来执行该程序。系统只有一个shell时,退回机制是非常方便的。但一般来说我们的系统都会有好几个shell,因此需要通过脚本文件中第一行设置#!来告知内核应该以哪个shell来执行所指定的shell脚本。

1.[KANO@kelvin ~]$ cat nusers 
2.#! /bin/bash -
3.
4.who|wc -l

其中选项——表示没有shell选项,这是基于安全上的考虑,可避免某种程度的欺骗式攻击(spoofing attack)。

一个简单的shell脚本的更多相关文章

  1. 如何在linux下编写一个简单的Shell脚本程序

    在了解了linux终端和其搭配的基本Shell(默认为bash)的基础下,我们就可以在终端中用vi/vim编辑器编写一个shell的脚本程序了 Shell既为一种命令解释解释工具,又是一种脚本编程语言 ...

  2. 一个简单的Shell脚本(解决windows上文本在macos上乱码问题)

    之所以有这一篇文章,是因为之前我写过的一篇文章:“解决Mac上打开txt文件乱码问题”:传送门: https://www.cnblogs.com/chester-cs/p/11784079.html ...

  3. 自动化运维:(3)写一个简单的Shell脚本(案例)

    一.需求 1.test.sh 脚本执行时候需要添加参数才能执行 参数和功能详情如下: 参数 执行效果 start 启动中... stop 关闭中... restart 重启中... * 脚本帮助信息. ...

  4. Linux系统学习笔记之 1 一个简单的shell程序

    不看笔记,长时间不用自己都忘了,还是得经常看看笔记啊. 一个简单的shell程序 shell结构 1.#!指定执行脚本的shell 2.#注释行 3.命令和控制结构 创建shell程序的步骤 第一步: ...

  5. 一个简单的ETL脚本的内容

    一个简单的ETL脚本应该包含如下内容 1.注释 2.设置字符集 3.基础路径参数 脚本路径 票据路径 日志路径 当前SHELL的脚本别名:declare SHELL_NAME=“${basename ...

  6. 如何写一个简单的shell

    如何写一个简单的shell 看完<UNIX环境高级编程>后我就一直想写一个简单的shell来作为练习,因为有事断断续续的写了好几个月,如今写了差不多来总结一下. 源代码放在了Github: ...

  7. 一个简单的appium脚本

    这是一个简单的appium脚本,测试amazon购物过程的,过程包括搜索商品,然后从结果列表中选取中意的商品,然后加入购物车,等等. 它是一个最原始的脚本,对测试元素.数据.报告等未作任何的封装,后面 ...

  8. python定义的一个简单的shell函数的代码

    把写代码过程中经常用到的一些代码段做个记录,如下代码段是关于python定义的一个简单的shell函数的代码. pipe = subprocess.Popen(cmd, stdout=subproce ...

  9. 手动编写一个简单的loadrunner脚本

    loadrunner除了自动录制脚本外,还可以手动编写脚本,通过右键+inset step添加步骤,还可以手动添加事务,集合点等 下面是一个简单的Action脚本,服务是运行在本机的flask服务: ...

随机推荐

  1. myeclipse内存不足有关问题

    myeclipse内存不足有关问题 myeclipse内存不足问题 使用myeclipse8.5出现如下问题:MyEclipse has detected that less than 5% of t ...

  2. python学习笔记:python字符串

    二.python字符串操作符 1. 对象标准类型操作符 Python对象的标准类型操作符一共就三种:对象值的比较.对象身份的比较.布尔类型.其中对象值的比较主要是大于.小于.不等于等的数学比较符:对象 ...

  3. 关于php输入$_post[‘’]报错的原因

    在php中输入$_post[‘’]值时页面报错,是因为变量未声明,所以页面出现提示Undefined index,是因为首先要用isset来判断是否存在这个变量. 如:isset($_POST['/* ...

  4. Yii 2.0安装

    通过 Composer 安装 注意: php版本最好在5.5以上! 1.下载 Yii2的高级应用程序模板 ,然后将其解压缩到一个Web可访问的文件夹. 2.下载Composer-Setup.exe , ...

  5. PowerDesigner15在生成SQL时报错Generation aborted due to errors detected during the verification of the mod

    转载: http://blog.csdn.net/successful555/article/details/7582154 PowerDesigner中如何设置字符编码为GBK或者GB2312 ht ...

  6. Linux 备份工具

     Linux 备份工具 GNU 的传统备份工具  GNU tar — http://www.gnu.org/software/tar/ GNU cpio — http://www.gnu.org/so ...

  7. HDOJ-1002 A + B Problem II (非负大整数相加)

    http://acm.hdu.edu.cn/showproblem.php?pid=1002 输入的数都是正整数,比较好处理,注意进位. //非负大整数加法 # include <stdio.h ...

  8. Hadoop 7、MapReduce执行环境配置

    MR执行环境有两种:本地测试环境,服务器环境 本地测试环境(windows,用于测试) 1.下载Winddows版的Hadoop程序,解压后在Hadoop目录的bin目录放置一个winutils.ex ...

  9. SQLServer中临时表与表变量的区别分析【转】

    在实际使用的时候,我们如何灵活的在存储过程中运用它们,虽然它们实现的功能基本上是一样的,可如何在一个存储过程中有时候去使用临时表而不使用表变量,有时候去使用表变量而不使用临时表呢? 临时表 临时表与永 ...

  10. ER 和 数据库关系模式

    http://lianghuanyue123.blog.163.com/blog/static/130423244201162011850600/ 我们眼下所接触的数据库基本上是关系数据库,关系数据库 ...