Linux&shell之Shell脚本
写在前面:案例、常用、归类、解释说明。(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脚本的更多相关文章
- 如何在java程序中调用linux命令或者shell脚本
转自:http://blog.sina.com.cn/s/blog_6433391301019bpn.html 在java程序中如何调用linux的命令?如何调用shell脚本呢? 这里不得不提到ja ...
- Linux生产服务器Shell脚本分享
Linux生产服务器Shell脚本分享 2012-6-6 86市场网 linux 作为一名Linux/unix系统管理员,我经常遇到人问这个问题:shell能做什么?PHP这么强大,为什么不用PHP来 ...
- linux下的shell和脚本
1.各种Unix shell linux下的shell基本是从unix环境中的shell发展而来,贴一下wiki:其中我们常用的,可归类为Bourne Shell(/usr/bin/sh或/bin/s ...
- Linux 服务器系统监控脚本 Shell【转】
转自: Linux 服务器系统监控脚本 Shell - 今日头条(www.toutiao.com)http://www.toutiao.com/i6373134402163048961/ 本程序在Ce ...
- Linux下添加shell脚本使得nginx日志每天定时切割压缩
Linux下添加shell脚本使得nginx日志每天定时切割压缩一 简介 对于nginx的日志文件,特别是access日志,如果我们不做任何处理的话,最后这个文件将会变得非常庞大 这时,无论是出现异常 ...
- Linux编程 20 shell编程(shell脚本创建,echo显示信息)
一概述 前面19章里已经掌握了linux系统和命令行的基础知识,从本章开始继续学习shell脚本的基础知识.在大量编辑shell脚本前,先来学习下一些基本概念. 1.1 使用多个命令 Shell ...
- linux下的shell脚本(基本)
shell有些命令和格式不用老是容易忘,学而时习之,不亦说乎~ 先说明以下内容来自: http://c.biancheng.net/cpp/shell/ ,C语言中文网,请大家支持原作,点击链接查看. ...
- linux下实现shell脚本自动连接mongodb数据库并创建索引
在linux下创建shell脚本
- 2019.11.13课堂实验之用Linux下的shell脚本完成两文本交替输出
有两个文本如下,实际中并不知道两文本各有多少行: 文本1.txt aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ccccccccccccccccccccccccccc ...
- Linux中编写Shell脚本
目录 Shell Shell脚本的执行 Shell脚本编写规范 Shell 中的变量 变量的算术运算 双小括号 (()) 数值运算命令的用法 let 运算命令的用法 expr 命令的用法 br 命令 ...
随机推荐
- SA密钥长度、明文长度和密文长度
本文介绍RSA加解密中必须考虑到的密钥长度.明文长度和密文长度问题,对第一次接触RSA的开发人员来说,RSA算是比较复杂的算法,RSA的复杂度是因为数学家把效率和安全也考虑进去的缘故. 本文先只谈密钥 ...
- 关于echarts绘图,主题的更换
echarts主题进行更换步骤: 模块化单文件引入(推荐) 1.查看自己想要的主题 echarts官网 http://echarts.baidu.com/echarts2/doc/example/t ...
- 怎样写好一份IT技术岗位的简历
10月是校园招聘的旺季,很多应届毕业生都忙碌起来了,从CSDN笔试-面试文章的火热程度,从我收到的简历就看得出来. 我很久没有参与笔试和面试了,所以只能从“简历”来阐述下我的看法. 截至目前,已经帮8 ...
- 关于ADO.NET的一些知识整理
ADO.NET是什么 虽然我们都知道ADO.NET是对数据库的操作,但是要真的说出ADO.NET的具体含义还不是很容易. ADO.NET是ActiveX Data Objects的缩写,它是一个COM ...
- PL/SQL Select into 异常处理
在使用select into 为变量赋值时,如果变量是集合类型,不会产生异常,而如果是基本类型或记录类型,则会报异常. 异常产生了怎么办?当然是捕获并处理啦. 对于普通的代码块来说,在代码块的结尾处理 ...
- PreferenceFragment界面透明问题
PreferenceFragment界面默认是透明的 而其布局代码框架为 <PreferenceScreen> ... </PreferenceScreen>,背景色及透明度属 ...
- Android 安全性和权限
自定义权限 permission <permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT& ...
- wpf 窗体中显示当前系统时间
先看一下效果: 这其实是我放置了两个TextBlock,上面显示当前的日期,下面显示时间. 接下来展示一下代码: 在XAML中: <StackPanel Width="205" ...
- 《zip命令》-linux命令五分钟系列之九
本原创文章属于<Linux大棚>博客. 博客地址为http://roclinux.cn. 文章作者为roc 希望您能通过捐款的方式支持Linux大棚博客的运行和发展.请见“关于捐款” == ...
- Kickstart + http Linux自动化部署服务端
设备需要开启Network Boot功能.具体PXE技术就另外提,本文主要讲解配置. 在搭建该服务器之前需要关闭SELinux和iptables不然可能dhcp服务都起不来,客户端收不到IP地址,无法 ...