简单的示例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

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

$? 执行上一个命令的返回值

示例-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 命令:单步调试显示执行

2、expr命令,对整型变量进行运算

如: expr 3 + 5  #”+”号之间须有空格

expr $var1 - 5

expr $var1 / $var2

expr $var3 \* 10  #”*”号需要转义符”\”

复杂的运算:

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

最新文章

  1. 【日记】thinkphp项目阿里云ECS服务器部署
  2. Kendo UI For ASP.NET MVC项目资源
  3. java类集开发中一对多和多对多的关系的实现
  4. QQ--模拟登录
  5. Web端PHP代码函数覆盖率测试解决方案
  6. Query Designer中的特征限制(Characteristic Restrictions)、缺省值(Default Values)、自由特性(Free Characteristics)
  7. Second Day learning English
  8. Ubuntu 12.10
  9. linux 挂载(转载)
  10. OC 成员变量作用域
  11. poj 3278 Catch That Cow (bfs)
  12. Android4大组件
  13. iOS开发之pch文件
  14. Can you answer these queries?
  15. Python中的三种数据结构
  16. [Swift]LeetCode952. 按公因数计算最大组件大小 | Largest Component Size by Common Factor
  17. 【webpack】中mini-css-extract-plugin使用方法
  18. Java使用Redis实现分布式锁来防止重复提交问题
  19. C++获取网络数据
  20. Python全栈学习_day006作业

热门文章

  1. 对象设计解耦的方法IOC和DI
  2. WEEX学习网站
  3. day63-webservice 07.07.如何修改cxf配置文件路径
  4. C# 同步更新系统时间
  5. 【转】什么是P问题、NP问题和NPC问题
  6. MVC中使用UpdateModel获取接口参数
  7. Svn install and use
  8. BS程序性能调优
  9. 第5章分布式系统模式 使用客户端激活对象通过 .NET Remoting 实现 Broker
  10. android系统源码下载