Shell编程入门(再版)(在)

时间:2022-04-28 19:43:02

简单的演示样本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编程入门(再版)(在)

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

Shell编程入门(再版)(在)

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

Shell编程入门(再版)(在)

单引號之间的内容原封不动地指定给了变量。

5、 set查看系统中定义的全部变量

unset删除所定义的变量

6、位置变量

Shell解释运行用户命令时,将命令行的第一个部分作为命令名,其他部分作为參数。

由出如今命令行上的位置确定的參数称为位置參数。

比如:

ls -l file1 file2 file3

$0 这个程序的文件名称 ls -l

$n 这个程序的第n个參数值,n=1~9

7、特殊变量

$* 这个程序的全部參数

$# 这个程序的參数个数

$$ 这个程序的PID

$! 运行上一个后台命令的PID

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

Shell编程入门(再版)(在)

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

Shell编程入门(再版)(在)

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  #”*”号须要转义符”\”

Shell编程入门(再版)(在)

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

Shell编程入门(再版)(在)

将运算结果赋予变量:

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

版权声明:本文博主原创文章。博客,未经同意不得转载。