写在前面:案例、常用、归类、解释说明。(By Jim)

使用多条命令
shell脚本的关键是可以输入多条命令,甚至可以将一条命令的结果传递给另一条命令。
date;who(两个命令shell脚本的写法)

创建shell脚本
1.将shell命令放置到一个文本文件中
2.指明所使用的shell,比如#!/bin/bash
3.可以用#注释,但是一般注释不会被读取,第一行除外
案例
#!/bin/bash
#This script displays the date and who's logged on
date
who
4.保存为test1
5.将shell脚本文件所在的目录添加到PATH环境变量中(
a.修改~/.bash_profile
PATH=$PATH:$HOME/bin:/home/jiqing9006/shellscript
export PATH
b.执行source ~/.bash_profile)
6.在命令行提示符中使用文件的绝对路径或相对路径来引用该shell脚本

显示消息
echo Let's see if this'll work(输出字符串,如果有单引号最好将整个字符串包在“”当中,否则单引号可能不会被输出。)
echo -n "The time and date are:"
date(-n让字符串与执行结果显示在一行中)

使用变量
变量允许在shell脚本中暂存信息,以便与脚本中其他命令一起使用。
#!/bin/bash
#display user information from the system.
echo "User info for userid:$USER"
echo UID: $UID
echo HOME: $HOME
echo PATH: $PATH
(脚本中有一些变量的使用)
如果想显示$符,可以加\,如下所示
echo "The cost of the item is \$15"

用户变量
#!/bin/bash
# testing variables
days=10
guest="Jiqing"
echo "$guest checked in $days days ago"
days=5
guest="Jessica"
echo "$guest checked in $days days ago"
(定义用户自己的变量days,guest。这一点跟php有点相近)
#!/bin/bash
# assigning a variable value to another variable
value1=10
value2=$value1
echo The result value is $value2
(用变量给变量赋值)

反引号``
反引号允许将shell命令的输出赋值给变量。必须将整个命令行命令用反引号包围起来。
testing=`date`(注意不是单引号,是~下面的那么符号)
#using the backtick character
testing=`date`
echo "The date and time are:" $testing

#!/bin/bash
#using the backtick character
today=`date +%y%m%d`
ls /usr/bin -al > log.$today(将ls /usr/bin -al 查询出来的结果写到log.$today文件中,执行完之后会发现新增一个log文件,里面都是查询出来的内容)

重定向输入输出
有时候想通过命令保存输出,而不是只在显示器显示输出。
输出重定向
date >test6(将date指令查询的结果保存到文件test6中)
date >>test6(将信息追加到test6文件中)

输入重定向(与输出相反的动作)
wc <test6(将文本文件的内容重定向到wc命令下,供wc统计使用)

管道
有时候需要将一个命令的输出发送到另一个命令的输入。
rpm -qa(列出所有被安装的rpm package )
|
将一个命令的输出发送到另一个命令的输入。
rpm -qa >rpm.list
sort rpm.list
(等价于rpm -qa|sort)
亦可以将重定向技术与管道结合使用
rpm -qa |sort >rpmlist

数学计算
a.expr命令
expr 1 + 2(注意要用空格,吓死我了,以为不能用来着)
expr 5 \* 2(使用乘法需要加反斜杠)
#!/bin/bash
#An example of using the expr command
var1=10
var2=20
var3=`expr $var2 / $var1`
echo "The value of var3 is:"$var3
(定义两个变量,用expr计算结果,保存到var3中,输出结果)
b.使用括号$[]
echo $[1+2](输出3)
#!/bin/bash
var1=100
var2=50
var3=45
var4=$[$var1*($var2-$var3)]
echo The final result is $var4
(括号让数学计算更加简便了,结果为500)
c.浮点解决方案
bash计算器实际上是一种编程语言,该语言允许在命令行中输入浮点表达式,然后解释表达式并计算它们,最后返回结果。
输入bc进入指令模式
输入quit退出指令模式
在脚本中使用bc
#!/bin/bash
var1=`echo " scale=4;3.44/5"|bc`
echo The answer is $var1
(将指令的结果保存给变量var1,指令中用了管道技术,输出指令给bc,bc执行之后返回结果)
来看更多的例子
#!/bin/bash
var1=100
var2=45
var3=`echo " scale=4;$var1/$var2"|bc`
echo The answer for this is $var3
(结果为2.2222)

#!/bin/bash
var1=20
var2=3.14159
var3=`echo " scale=4;$var1*$var1"|bc`
var4=`echo " scale=4;$var3*$var2"|bc`
echo The answer is $var4
(计算圆的面积)
还可以用EOF来计算,更加的方便,清晰
#!/bin/bash
var1=10.46
var2=43.67
var3=33.2
var4=71

var5=`bc<<EOF
scale = 4
al = ($var1*$var2)
b1 = ($var3*$var4)
a1+b1
EOF
`
echo The answer is $var5

退出脚本
$?保存最后一条命令执行结束的退出状态。
一条命令成功完成的退出状态是0。如果命令执行错误,那么退出状态就会是一个正整数。
0 完成
1 未知错误
2 误用shell
126 命令无法执行
127 没有找到命令
..
exit命令允许在脚本结束时,指定一个退出状态。

Linux&shell之Shell脚本的更多相关文章

  1. 如何在java程序中调用linux命令或者shell脚本

    转自:http://blog.sina.com.cn/s/blog_6433391301019bpn.html 在java程序中如何调用linux的命令?如何调用shell脚本呢? 这里不得不提到ja ...

  2. Linux生产服务器Shell脚本分享

    Linux生产服务器Shell脚本分享 2012-6-6 86市场网 linux 作为一名Linux/unix系统管理员,我经常遇到人问这个问题:shell能做什么?PHP这么强大,为什么不用PHP来 ...

  3. linux下的shell和脚本

    1.各种Unix shell linux下的shell基本是从unix环境中的shell发展而来,贴一下wiki:其中我们常用的,可归类为Bourne Shell(/usr/bin/sh或/bin/s ...

  4. Linux 服务器系统监控脚本 Shell【转】

    转自: Linux 服务器系统监控脚本 Shell - 今日头条(www.toutiao.com)http://www.toutiao.com/i6373134402163048961/ 本程序在Ce ...

  5. Linux下添加shell脚本使得nginx日志每天定时切割压缩

    Linux下添加shell脚本使得nginx日志每天定时切割压缩一 简介 对于nginx的日志文件,特别是access日志,如果我们不做任何处理的话,最后这个文件将会变得非常庞大 这时,无论是出现异常 ...

  6. Linux编程 20 shell编程(shell脚本创建,echo显示信息)

    一概述 前面19章里已经掌握了linux系统和命令行的基础知识,从本章开始继续学习shell脚本的基础知识.在大量编辑shell脚本前,先来学习下一些基本概念. 1.1    使用多个命令 Shell ...

  7. linux下的shell脚本(基本)

    shell有些命令和格式不用老是容易忘,学而时习之,不亦说乎~ 先说明以下内容来自: http://c.biancheng.net/cpp/shell/ ,C语言中文网,请大家支持原作,点击链接查看. ...

  8. linux下实现shell脚本自动连接mongodb数据库并创建索引

    在linux下创建shell脚本

  9. 2019.11.13课堂实验之用Linux下的shell脚本完成两文本交替输出

    有两个文本如下,实际中并不知道两文本各有多少行: 文本1.txt aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ccccccccccccccccccccccccccc ...

  10. Linux中编写Shell脚本

    目录 Shell Shell脚本的执行 Shell脚本编写规范 Shell 中的变量 变量的算术运算 双小括号 (())  数值运算命令的用法 let 运算命令的用法 expr 命令的用法 br 命令 ...

随机推荐

  1. Android(java)学习笔记212:中文乱码的问题处理(qq登录案例)

    1.我们在之前的笔记中LoginServlet.java中,我们Tomcat服务器回复给客户端的数据是英文的"Login Success","Login Failed&q ...

  2. media query

    accepted Another useful media feature is device-aspect-ratio. Note that the iPhone 5 does not have a ...

  3. Extjs ——radiogroup子元素宽度调整

    配置项 类型 说明 allowBlank Boolean 设置是否必须选择至少一项,true表示可以不选,false表示不能为空至少选一项,默认为true blankText String 当allo ...

  4. 如何使用node中的buffer

    介绍:Buffer类是一个全局类,是一个比较罕见不需要require( ‘buffer’ )就可以使用的类,Buffer类似与数组也有length, 它里面的元素为16进制的两位数,即 0-255的数 ...

  5. 关于promise

    后来发现promise是解决异步的一个链式调用的好的方法,避免了所谓的回调的监狱, 它有三个状态,未作为,已经完成和已经失败,起始是未作为,然后有了动作总会有个结果, 分成resolve,已经顺利ok ...

  6. 分离数据库(Detach database).

    Many times, we often needs to detach our databases if we want to copy it to another database instanc ...

  7. linq学习笔记:将List<T> 转换为 Dictionary<T Key,T Value>

    运用Linq,将List<T> 转换为 Dictionary<T Key,T Value> 即:List<T>  ToDictionary<T Key,T V ...

  8. Session技术详解

    1.session简介 在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下).因此,在需要保存用户数据时,服务器程 ...

  9. java_设计模式_工厂模式_Factory Pattern(2016-08-04)

    工厂模式主要是为创建对象提供了接口.工厂模式按照<Java与模式>中的提法分为三类: (1)简单工厂(Simple Factory)模式,又称静态工厂方法模式(Static Factory ...

  10. 104. Maximum Depth of Binary Tree(C++)

    104. Maximum Depth of Binary Tree Given a binary tree, find its maximum depth. The maximum depth is ...