写在前面:案例、常用、归类、解释说明。(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. 再回首,Java温故知新(一):Java概述

    Java发展历程 Java的发展要追溯到1991年,Patrick Naughton(帕特里克·诺顿)和James Gosling(詹姆斯·高斯林)带领Sun公司的工程师打算为有线电视转换盒之类的消费 ...

  2. iOS 集合的深复制与浅复制

    概念 对象拷贝有两种方式:浅复制和深复制.顾名思义,浅复制,并不拷贝对象本身,仅仅是拷贝指向对象的指针:深复制是直接拷贝整个对象内存到另一块内存中. 一图以蔽之 再简单些说:浅复制就是指针拷贝:深复制 ...

  3. Eclipse 每行 80 字符限制的提示线

    有时候希望eclipse和C++编辑器之类有条对齐线 打开 Eclipse, Windows -> Prefereces -> General -> Editors -> Te ...

  4. 11.2 morning

    noip模拟题day1——棋盘上的问题 day1模拟题 By FancyCoder总览(Overview)注意事项:共3道题目,时间2.5小时.Pascal选手允许使用math库和ansistring ...

  5. ActionScript:Resampling PCM data

    使用基于flash的麦克风录音,如果想在获取完PCM采样数据后,通过Sound马上回放,必须经过resampling.(注意:如果录音是采用的44KHz的话,则不需要) 因此,需要as实现一个简便的函 ...

  6. 如何在xcode下面同时安装cocos2d-iphone 和 cocos2d-x模板,其实是因为很喜欢C++的缘故,当时学习的是前者,现在自己摸着石头过河了就(cocos2d-x安装失败 出错)

    首先在Xcode下面配置两个模板的开发环境,其实一个开源库,一个C++移植,学习需要也是,我的mac上一直用的是cocos2d-iphone, 今天想试下cocos2d-x,安装的时间发现安装成功(我 ...

  7. Singleton 模式

    个人认为 Singleton 模式是设计模式中最为简单.最为常见.最容易实现,也是最应该熟悉和掌握的模式.且不说公司企业在招聘的时候为了考察员工对设计的了解和把握,考的最多的就是 Singleton ...

  8. 狗狗40题~(Volume B)

    H - Sorting Slides 应该是个二分匹配的模板题的,但我还不会写 = = 其实数据规模很小,就用贪心的方法就水过了(没加vis判冲突wa了几发,从此开始艰难的没有1A 的生活) #inc ...

  9. 功能: 用函数 funName 对数组 objArray 中的每个值进行处理一次,

    function each( objArray, funName ) {//功能: 用函数 funName 对数组 objArray 中的每个值进行处理一次,for(var i=0; i<obj ...

  10. php把文件上传到远程服务器上例子

    在这里我们利用curl实现把本地服务器的文件通过curl发送请求给远程服务器的php文件接受就实现了上传,还一个是利用ftp来上传方法也是php中的curl操作ftp服务器进行上传. 我这里写的是用c ...