简单的示例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/sysinfoecho "Disk info:" >> /tmp/sysinfo
/bin/df -h >> /tmp/sysinfo
echo >> /tmp/sysinfoecho "Online users:" >> /tmp/sysinfo
/usr/bin/who | /bin/grep -v root >> /tmp/sysinfo
echo >> /tmp/sysinfoecho "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 dateDATE=$(/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.tarif [ $? -eq 0 ]
thenecho "$1 $DATE backup successfully" >> /backup/$1.bak.log
elseecho "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 varecho '$# 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 readread first second thirdecho "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 expra=10
b=20
c=30val1=$(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编程入门(第二版)(上)相关推荐

  1. Shell编程入门(第二版)(中)

    变量测试语句-test 作用:用来测试变量是否相等,是否为空,文件类型等. 格式: test 测试条件 或 [] #范围:整数,字符串,文件 1)整数测试: test int1 -eq int2  测 ...

  2. Shell编程入门(第二版)(下)

    流程控制语句 三.select/in[较少用] 格式: [python] view plaincopy select [变量] in [关键字] do command 1 ... ... comman ...

  3. Shell 编程入门

    走进 Shell 编程的大门 为什么要学Shell? 学一个东西,我们大部分情况都是往实用性方向着想.从工作角度来讲,学习 Shell 是为了提高我们自己工作效率,提高产出,让我们在更少的时间完成更多 ...

  4. Shell编程入门-Shell程序设计实例

    Shell编程入门-Shell程序设计实例 1.增加用户账户 编写一个Shell程序addaccount.sh,在系统中增加四个账户,同时设定他们的初始密码为123456,主组群为wl20. ①查看系 ...

  5. Linux【实操篇】—— Shell 编程入门、变量、运算符、条件判断、流程控制

    目录 一.Shell 编程入门 1. 认识 Shell 2. Shell 脚本的创建与执行 二.Shell 变量 1. 系统变量和自定义变量 2. 变量的基本规则 3. 设置环境变量 4. 位置参数变 ...

  6. 《Python核心编程》第二版第36页第二章练习 -Python核心编程答案-自己做的-

    <Python核心编程>第二版第36页第二章练习 这里列出的答案不是来自官方资源,是我自己做的练习,可能有误. 2.21 练习 2-1. 变量,print和字符串格式化操作符.启动交互式解 ...

  7. 《Python核心编程(第二版)》——1.9 练习

    本节书摘来自异步社区<Python核心编程(第二版)>一书中的第1章,第1.9节,作者[美]Wesley J. Chun,宋吉广 译,更多章节内容可以访问云栖社区"异步社区&qu ...

  8. shell编程入门 linux解释器原理,Shell编程入门Linux解释器原理详细介绍 使用Shell进行工作的人们对.doc...

    Shell编程入门Linux解释器原理详细介绍 使用Shell进行工作的人们对 Shell编程入门:Linux解释器原理详细介绍使用Shell进行工作的人们对Unix/Linux下的Shell编程都很 ...

  9. 《Python核心编程》第二版第18页第一章练习 -Python核心编程答案-自己做的-

    <Python核心编程>第二版第18页第一章练习 这里列出的答案不是来自官方资源,是我自己做的练习,可能有误. 1.9 练习 1-1. 安装Python.请检查Python是否已经安装到你 ...

最新文章

  1. html width字符数,HTML pre标签 width 属性
  2. 日积月累:ProguardGui进行jar包代码混淆
  3. spring事务管理之事务回滚的处理
  4. 期刊 | 人类遗传学领域期刊速览
  5. 【转】有关Oracle随机字符串的生成方法及具体应用
  6. Ext中的get、getDom、getCmp、getBody、getDoc的区别
  7. 按钮、菜单的重绘代码
  8. 国税计算机基础知识,国税系统计算机基础知识培训课件精要.ppt
  9. FastStone Capture(FSCapture) 注册码
  10. RSA 加解密(Java 实现)
  11. 利用爬虫来制作一个翻译小软件
  12. RS232通信协议详解
  13. Laravel 根据数据库生成migration
  14. Oracle数据库:oracle内连接inner join on,多表查询各种自链接、内连接、外连接的练习示例
  15. 搜狗输入法 + qq
  16. MySQL精简版安装教程
  17. android 动态壁纸 波浪效果,移动的波纹动态壁纸
  18. android tools ignore,android tools属性引用
  19. css中的div容器笔记
  20. WMF,双立人,菲仕乐,法国OQO——国际顶级厨具

热门文章

  1. 数据结构之插入排序:直接插入排序
  2. 计算机网络之网络层:11、移动IP
  3. libwacom9 : Depends: libwacom-common (= 2.2.0-1) but 1.12-1 is to be installed
  4. 抓取流量分析恶意软件或泄密流量(精)
  5. Kali aircrack-ng wifi密码破解(暴力)(1)
  6. matlab画横的/水平的条形图
  7. rinetd 进行转发
  8. Ubuntu16.04安装使用wineqq
  9. 虎记:强大的nth-child(n)伪类选择器玩法
  10. 小米手机调用系统截图挂掉问题