shell脚本基础

1. 什么是shell 脚本?

shell scripts 是将一些指令汇整起来一起执行,说白了就是若干个命令的集合,执行一个脚本,就可以执行多个命令,很方便,不需要编译,只要将脚本的权限改为可执行就可以.

1.1.  第一个shell scripts

[root@linux ~]#  vim  sh01.sh

#! /bin/bash--------------------------->宣告这个脚本所使用的shell名称

# Program:  ---------------------------->注释,说明程序的功能

# This program is used to show "Hello World !" in screen.

# History:  ---------------------------->注释,作者,建档日期

# 2014/01/03  Bruce  First release

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin---------------------->环境变量的宣告

export  PATH---------------------->导出环境变量

echo -e "Hello World !"----------------------->主要程序内容

exit 0  ----------------------->shell执行结束退出.

除了第一行#!/bin/bash不是注释,其他的#都是注释

1.2. shell scripts大体就分为5个部分

第一部分:  说明脚本所使用的shell

第二部分:  说明程序的内容

第三部分:   说明主要的环境变量

第四部分:   主要的程序内容

第五部分:   执行shell结束,返回执行结果.(可以通过在命令行执行 echo  $?来观察执行的返回值)

2.和用户进行交互来确定变量的值

[root@linux ~]# vim sh02.sh

#!/bin/bash

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:

export PATH

read  -p  "Please input your first name:" firstname

read  -p  "Please input your last name:" lastname

echo -e "\nYour full name is:$firstname $lastname"

exit 0

3.脚本的执行方法:

在命令行执行 

a. [root@linux ~]# bash sh02.sh

b. [root@linux ~]#chmod a+x sh02.sh;./sh02.sh

4.数值运算的方法

输入两个变量,并且输出这两个变量相乘的结果(bas shell只支持整数数据)

#!/bin/bash

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin

export  PATH

echo -e "You should input 2 number\n"

read  -p  "first  number:" firstnumber

read  -p  "second number:" secondnumber

total=$(($firstnumber*$secondnumber))   或   declare  -i  total=$firstnumber*$secondnumber(declare 定义变量的类型)

echo -e "\n The number $firstnumber x $secondnumber is ==>$totall"

5.test指令的测试功能

    功能: 可以检测系统上面某些档案或者相关的属性

    ex: [root@linux ~]# test  -e  /dmtsai      ---------------->检测该目录是否存在(结果是不会显示任何信息的)

修改:

[root@linux ~]# test -e /dmtsai  && echo "Not  exist " || echo "exist"---------------------->可以用(echo  $?来查看命令执行的结果,正确执行返回0,否者返回非0值)

5.1  test 的选项的含义

查看文件的类型

-e------------------------------->查看某文件是否存在(test  -e  filename)

-f-------------------------------->查看该档案名是否为文件

-d------------------------------->查看是否为目录

-b------------------------------->查看是否是个块设备

-c------------------------------->查看是否是一个字符设备

-S------------------------------->查看是否是一个socket

-p-------------------------------->查看是否是一个FIFO

-L--------------------------------->查看是否为链接文件(即通常所说的桌面快捷图标)

查看文件的权限

-r----------------------------------->查看文件是否可读(test  -r  filename)

-w---------------------------------->查看文件是否可写

-x----------------------------------->查看文件是否可执行

两个文件的比较

-nt----------------------------------->(newer  than)判断文件file1是否比file2新(test  file1  -nt  file2)

-ot------------------------------------>(older  than)判断文件file1是否比file2旧

-ef------------------------------------>判断file1与file2是否为同一个文档

两个整数之间的判定

-eq----------------------------------->判断两个数是否相等(test  n1  -eq  n2)

-nq----------------------------------->判断两个数是否不想等

-gt------------------------------------>判断n1是否大于n2

-lt------------------------------------->判断n1是否小于n2

-ge----------------------------------->判断n1是否大于等于n2

-le------------------------------------>判断n1是否小于等于n2

字符串的判断

-z------------------------------------>判断字符串是否为空字符串(test  -z  string)

-n----------------------------------->判断字符串是否是非空字符串(test  [-n] string )

=------------------------------------->判断两字符串是否相等(test  str1=str2)

!=------------------------------------->判断两个字符串是否不相等(test  str1 != str2)

多重条件判断

-a------------------------------------->(and)判断两种情况是否同时成立(test  -r  file  -a  -x  file,判断文件file是否具有读写权限)

-o------------------------------------->(or)两种情况任何一种成立

!--------------------------------------->非,(test ! -x file,判断file是否不具有可执行权限)

EX:

[root@linux ~] vim sh05.sh

#!/bin/bash

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin

export  PATH

# 1. 让使用者输入档案名,并且判断使用者是否真的有输入字符串

echo -e "The program will show you that filename is exist which input by you.\n"

read -p "Input a filename:" filename

test -z $filename && echo "You must input a filename." && exit 0

# 2. 判断档案是否存在

test ! -e $filename && echo "The filename $filename don't exist" && exit 0

# 3. 判断档案的类型与属性

test -f $filename && filetype="regulare file"

test -d $filename && filetype="directory"

test -r $filename && perm="readable"

test -w $filename && perm="$perm writable"

test -x $filename && perm="$perm executable"

# 4. 输出信息

echo "The filename: $filename is a $filetype"

echo "And the permission are : $perm"


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值