Shell脚本

一、 Shell和Shell Script

       从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁。用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操作。在Linux GUI日益完善的今天,在系统管理等领域,Shell编程仍然起着不可忽视的作用。深入地了解和熟练地掌握Shell编程,是每一个Linux用户的必修功课之一。

       Linux的Shell种类众多,常见的有:Bourne Shell(/usr/bin/sh或/bin/sh)、Bourne Again Shell(/bin/bash)、C Shell(/usr/bin/csh)、K Shell(/usr/bin/ksh)、Shell for Root(/sbin/sh),等等。不同的Shell语言的语法有所不同,所以不能交换使用。每种Shell都有其特色之处,基本上,掌握其中任何一种 就足够了。在本文中,我们关注的重点是Bash,也就是Bourne Again Shell,由于易用免费,Bash在日常工作中被广泛使用;同时,Bash也是大多数Linux系统默认的Shell

       Shell script是利用shell的功能所写的一个“程序”,这个程序是使用纯文本文件,将一些Linux Shell的语法与命令(含外部命令)写在里面,搭配正则表达式管道命令数据流重定向等功能,以达到我们所想要的处理目的。Shell script提供数组、循环、条件与逻辑判断等重要功能,让用户也可以直接以shell来编写程序,而不必使用类似C程序来完成相关功能。

二、 Shell实例和执行

[lingyun@centos6 ~]$ vim hello.sh

#!/bin/bash
#This is a sample shell script
str="Hello World!"
echo $str

var1=5
var2=6
total=`expr $var1 + $var2`
echo "total=$total"

var=${str}${var1}
echo $var

编译方法1:

[lingyun@centos6 ~]$ bash hello.sh

编译方法2:

[lingyun@centos6 ~]$ chmod a+x hello.sh

[lingyun@centos6 ~]$ ./hello.sh

总结:

  1. #! 告诉系统其后路径所指定的程序即是解释此脚本文件的 Shell 程序
  2. Shell Script是一种弱类型语言,使用变量的时候无需首先声明其类型,也无需事先定义
  3. Shell在对变量取值的时候要在变量名前加$

三、 Shell条件判断

#!/bin/sh
# gt(>)  lt(<)  eq(=)  ge(>=)  le(<=)

var=5

if [ $var -gt 5 ] ; then
    echo "var greater than 5"
elif [ $var -eq 5 ] ; then
    echo "var equal to 5"
elif [ $var -lt 5 ] ; then
    echo "var less than 5"

if 空格 [ 空格 XX 空格 ]  ;then (一定要有空格,否则出错)

# Greater than >

# Little than <

# Equal =

常见的字符判断:

1、 字符串判断:

str1 = str2  当两个串有相同内容时为真

str1 != str2    当串str1和str2不等时为真

-n str1      当串的长度大于0时为真(串非空)

-z str1      当串的长度为0时为真(空串)

str1        当串str1为非空时为真

2、 数字的判断:

int1 -eq int2    两数相等为真

int1 -ne int2    两数不等为真

int1 -gt int2     int1大于int2为真

int1 -ge int2    int1大于等于int2为真

int1 -lt int2      int1小于int2为真

int1 -le int2     int1小于等于int2为真

3、 文件的判断

-r file      用户可读为真

-w file       用户可写为真

-x file     用户可执行为真

-f file      文件为正规文件为真

-d file     文件为目录为真

-c file     文件为字符设备文件为真

-b file     文件为块设备文件为真

-s file     文件大小非0时为真

4、 复杂逻辑判断:

-a         与

-o       或

!         非

四、 Shell switch/case

#!/bin/bash
SYSTEM=`uname -s`

case $SYSTEM in
    Linux)
        echo "Linux System"
        ;;

    FreeBSD)
        echo "FreeBSD System"
        ;;

    Solaris)
        echo "Solaris System"
        ;;

    *)  
        echo "Unknow System"
        ;;

esac   

五、 Shell循环

for循环:

for xxx in xxx ; do

xxx

done

#!/bin/bash

echo "Use for list 1~10"
for i in `seq 1 10` ; do 
    echo $i
done

echo "List file in current folder:" #打印使用ls命令后的字符串
for file in `ls`
do
    echo $file
done

 while循环:

#!/bin/bash

echo "Use while list 1~10"
min=1
max=10
while [ $min -le $max ]
do
    echo $min
    min=`expr $min + 1`
done

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值