Shell编程入门(再版)(在)
简单的演示样本Shell规划
演示样例1.
#!/bin/bash
#This is to show what a shell script looks like
echo "Our first example"
echo # This inserts an empty line in output.
echo "We are currently in the following directory."
/bin/pwd
echo
echo "This directory contains the following files"
/bin/ls -l .
演示样例2.
#!/bin/bash
# Auto mail for system info /bin/date +%F >> /tmp/sysinfo
echo >> /tmp/sysinfo echo "Disk info:" >> /tmp/sysinfo
/bin/df -h >> /tmp/sysinfo
echo >> /tmp/sysinfo echo "Online users:" >> /tmp/sysinfo
/usr/bin/who | /bin/grep -v root >> /tmp/sysinfo
echo >> /tmp/sysinfo echo "Memory info:" >> /tmp/sysinfo
/usr/bin/free -m >> /tmp/sysinfo
echo >> /tmp/sysinfo # Write to root
/usr/bin/write root < /tmp/sysinfo && /bin/rm -f /tmp/sysinfo # crontab -e
# 0 9 * * 1-5 ./sysinfo.sh
Shell结构
1、#。指定运行脚本的Shell
2、#凝视行。描写叙述该脚本的作用,负责人等信息
3、命令和控制结构
创建shell程序的步骤
第一步:创建一个包括命令和控制结构的文件。
第二步:改动这个文件的权限使它能够运行: chmod u+x
第三步:运行 ./example 或 sh example 或 . sysinfo.sh
Shell变量
变量:是shell传递数据的一种方法,用来代表每一个取值的符号名。
Shell有两类变量:暂时变量和永久变量。
暂时变量是shell程序内部定义的,其使用范围仅限于定义它的程序,对其他程序不可见。包括:用户自己定义变量、位置变量。
永久变量是环境变量,其值不随shell脚本的运行结束而消失。
1、用户自己定义变量
用户定义的变量由字母或下划线开头,由字母、数字或下划线序列组成,区分大写和小写。
变量名长度没有限制。在使用变量值时,要在变量名前加上前缀“$”。
2、设置和使用变量
设置变量:习惯上用大写字母来命名变量。变量名仅仅能以字母表中的字符开头,不能用数字。
变量赋值:“=”两边没有空格。
定义时赋值,如NUM=1
将一个命令的运行结果赋给变量,如:TIME=`date`;TIME=$(date +%F)
将一个变量的值赋给还有一个变量,如:B=120 ; A =$B
使用echo命令查看变量值。比如:echo $A
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvempmMjgwNDQxNTg5/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
3、包括多个字的变量:
NAME=Mike Ron #运行时出错,应改为:
NAME=“Mike Ron” 或 $NAME=‘Mike Ron’
4、单引號与双引號的差别
比方:定义DATE=$(date +%F)
time=”time is $DATE”
echo $time
time='time is $DATE'
echo $time
单引號之间的内容原封不动地指定给了变量。
5、 set查看系统中定义的全部变量
unset删除所定义的变量
6、位置变量
Shell解释运行用户命令时,将命令行的第一个部分作为命令名,其他部分作为參数。
由出如今命令行上的位置确定的參数称为位置參数。
比如:
ls -l file1 file2 file3
$0 这个程序的文件名称 ls -l
$n 这个程序的第n个參数值,n=1~9
7、特殊变量
$* 这个程序的全部參数
$# 这个程序的參数个数
$$ 这个程序的PID
$! 运行上一个后台命令的PID
$? 运行上一个命令的返回值
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvempmMjgwNDQxNTg5/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" style="font-family: 'Courier New';" alt="" />
演示样例-autobak.sh
#!/bin/bash
# backup files by date DATE=$(/bin/date +%Y%m%d)
/bin/tar -cf /backup/$1.$DATE.tar $1 > /dev/null 2>> /backup/$1.bak.log
/bin/gzip /backup/$1.$DATE.tar if [ $? -eq 0 ]
then
echo "$1 $DATE backup successfully" >> /backup/$1.bak.log
else
echo "ERROR: failure $1 $DATE backup" >> /bakup/$1.bak.log
fi # crontable -e
# 0 3 * * 2,5 script
演示样例-special.sh
#!/bin/bash
# A test script for special var echo '$# is' $#
echo '$* is' $*
echo '$0 is' $0
echo '$? is' $?
echo '$$ is' $$
echo '$2 is' $2
Shell命令
1、read命令[交互方式]
read USERNAME
演示样例-read.sh
#!/bin/bash
# A test script for read read first second third echo "Your first parameter is $first"
echo "Your second parameter is $second"
echo "Your third parameter is $third"
#sh -x 命令:单步调试显示运行
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvempmMjgwNDQxNTg5/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
2、expr命令,对整型变量进行运算
如: expr 3 + 5 #”+”号之间须有空格
expr $var1 - 5
expr $var1 / $var2
expr $var3 \* 10 #”*”号须要转义符”\”
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvempmMjgwNDQxNTg5/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" style="font-family: 'Courier New';" alt="" />
复杂的运算:
expr `expr 5 + 7`/$var4
将运算结果赋予变量:
var4=` expr $var1 / $var2 `
演示样例-expr.sh
#!/bin/bash
# A test for expr a=10
b=20
c=30 val1=$(expr $a + $b + $c)
echo "The value of val1 is $val1"
val2=$(expr $c / $b)
echo "The value of val2 is $val2"
val3=`expr $a \* $b`
echo "The value of val3 is $val3"
val4=`expr $a + $c / $b`
echo 'The value of $a + $c / $b is ' $val4
版权声明:本文博主原创文章。博客,未经同意不得转载。
Shell编程入门(再版)(在)的更多相关文章
- Linux Shell编程入门
从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁.用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操 ...
- 转:Linux Shell编程入门
http://www.cnblogs.com/suyang/archive/2008/05/18/1201990.html 从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来 ...
- 转inux Shell编程入门
http://www.cnblogs.com/suyang/archive/2008/05/18/1201990.html 从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来 ...
- Linux下的shell编程入门
通常情况下,我们从命令行输入命令每输入一次就能够得到系统的一次响应.一旦需要我们一个接着一个的输入命令而最后才得到结果的时候,这样的做法显然就没有效率.要达到这样的目的,通常我们利用shell程序或者 ...
- Shell编程入门基础上
前言 为什么学 Shell Shell 脚本语言是实现 Linux/UNIX 系统管理及自动化运维所必备的重要工具, Linux/UNIX 系统的底层及基础应用软件的核心大都涉及 Shell 脚本的内 ...
- [转]Linux Shell编程入门
转自:http://www.cnblogs.com/suyang/archive/2008/05/18/1201990.html 从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的 ...
- SHELL编程入门简介
一.SHELL软件概念和应用场景 1) 学习Linux技术,不是为了学习系统安装.命令操作.用户权限.配置IP.网络管理,学习Linux技术重点:基于Linux系统部署和维护各种应用软件.程序(Apa ...
- shell编程入门
背景知识 Shell 是用户与内核进行交互操作的一种接口,是 Linux 最重要的软件之一.目前最流行的 Shell 称为 bash Shell,bash Shell 脚本编程以其简洁.高效而著称,多 ...
- Linux简介及常用命令使用5--linux shell编程入门
生成 测试数据的shell脚本 Vim data_create.sh rm -rf ./data.txttouch data.txtfor((i=0;i<2000;i++))dostr=',na ...
随机推荐
- LDAPserver的安装
源代码安装,以root用户进行 由于:由于openldap须要用Berkeley DB来存放数据,所以要先安装所以需先安装Berkeley DB 4.2.52数据库. 一 安装Berkeley DB ...
- unity3d 数学的数学基础和辅助类
转载注明smartdot:http://my.oschina.net/u/243648/blog/67193 1. 数学(点乘/叉乘)/unity3d的数学辅助类 2. 坐标系统(本地/世界/屏幕 ...
- Objective C (iOS) for Qt C++ Developers(iOS开发,Qt开发人员需要了解什么?)
Qt/C++开发人员眼中的Obj-C 对于我们第一次自己定义iOS应用来说,对于来自Qt/C++开发人员来说,我不得不学习Objective-C相关语法与知识 为了让读者可以更easy理解这 ...
- java实现xml文件CRUD
java删除xml多个节点: 方案1.你直接改动了nodeList.这一般在做循环时是不同意直接这么做的. 你能够尝试在遍历一个list时,在循环体同一时候删除list里的内容,你会得到一个异常.建议 ...
- [C++] WinAES问题
WinAES这是一个很好windows CAPI包. 假设C++项目需求和java程序aes加密和通信的解密,然后WinAES代码是有问题. java的aes默认代码未设置IV和用途ECB模式. 因此 ...
- 泛泰A860 Andorid4.4.3 KTU84M (Omni) 图赏
Omni4.4.3 For Pantech A860L/K/S watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc3lob3N0/font/5a6L5L2T/ ...
- 给Ubuntu安装KDE桌面 [转]
自ubuntu5.10发布以来,我非常难得的让她在我的硬盘上顽强生存了近3个月,仔细想想就连当年我第一个接触的红旗Linux也不过坚持了一个月,呵呵,又写了一段废话── 所 谓的“重回Kununtu” ...
- tomcat 重启进程
查看端口: ps -aux | grep tomcat 发现并没有8080端口的Tomcat进程. 使用命令:netstat –apn 查看所有的进程和端口使用情况.发现下面的进程列表,其中最后一栏是 ...
- 最佳新秀SSH十六Struts2它是如何工作的内部
前面说完了Spring.Hibernate,非常自然今天轮到struts了.struts的核心原理就是通过拦截器来处理client的请求,经过拦截器一系列的处理后,再交给Action.以下先看看str ...
- 逆向wireshark学习SSL协议算法(转)
小贴士:SSL协议的定义 SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整 ...