Shell脚本编程(一)

目录

一、Shell命令行的书写规则

二、编写/修改权限及执行shell程序的步骤

1、编写简单Shell程序

2、建立可执行程序

3、执行Shell程序

4、实例

三、Shell程序中使用参数

1、位置参数

2、内部参数

3、实例一

4、实例二


一、Shell命令行的书写规则

        在执行Shell命令时可以多个命令在一个命令上运行,但需要使用分号(;)分隔命令,例如:

        长shell命令行可以使用反斜线字符(\)在命令行上进行扩充,例如:

">"符号是自动产生的,不是输入的。 

二、编写/修改权限及执行shell程序的步骤

        Shell程序有很多类似C语言和其他程序设计语言的特征,但又没有程序语言那么复杂。Shell程序是指放在一个文件中的一系列Linux命令和实用程序。在执行的时候,通过Linux操作系统一个接一个地解释和执行每条命令

1、编写简单Shell程序

        我们先编写一个简单的Shell程序:

        实现功能:保存文件名为date,将其存放在目录/mnt/d下。

#! /bin/bash

echo "Mr.$USER, Today is:"
echo &date "+%B %d %A"
echo "Wish you a lucky day!"

       #! /bin/bash 通知采用Bash解释,如果在echo语句中执行Shell命令date,则需要在date命令前加符号“&”,其中%B %d %A为输入格式控制符。

2、建立可执行程序

        编辑完该文件后还不能立即执行该文件,需要给文件设置可执行程序权限,使用如下命令:

3、执行Shell程序

        我们执行这个Shell程序,有三种方法:

        方法一:直接在当前文件夹运行date。

        方法二:使用bash解释程序运行。

        方法三:为了在任何目录都可以编译和执行Shell程序,可以把/mnt/d这个目录添加到整个环境变量中。

4、实例

        编写一个Shell程序mkf,程序功能:显示/mnt/d下的文件信息,然后建立一个kk的文件夹,在此文件夹下建立一个文件aa,修改此文件的权限为可执行。

        分析可知,该Shell程序需要依次执行以下命令:

        进入/mnt/d/test目录:cd /mnt/d

        显示/mnt/d/test目录下的文件信息:ls -l

        新建文件夹kk:mkdir kk

        进入/mnt/d/test/kk目录:cd kk

        新建一个文件aa:vi aa         #编辑完成后需要手动保存

        修改aa文件权限为可执行:chmod +x aa

        回到/mnt/d/test目录:cd /mnt/d/test

#! /bin/bash

cd /mnt/d/test
ls -l
mkdir kk
cd kk
vi aa
chmod +x aa
cd /mnt/d/test

三、Shell程序中使用参数

       Shell程序中的参数包括位置参数内部参数等,如同ls命令可以接受目录等作为它的参数一样,在Shell编程时同样可以使用参数。

1、位置参数

        由系统提供的参数称为位置参数。位置参数的值可以用$N得到,N是一个数字,如果为1,即$1。类似C语言中的数组,Linux会把输入的命令字符串分段并给每段进行标号,标号从0开始。第0号为程序名字,从1开始就表示传递给程序的参数。如$0表示程序的名字$1表示传递给程序的第一个参数,以此类推。

2、内部参数

        上述过程中的$0是一个内部变量,它是必须的,而$1可有可无。最常用的内部变量有$0、$#、$?、$*,它们的含义是:

        $0:命令含命令所在的路径

        $#:传递给程序的总的参数数目

        $?:Shell程序在Shell中退出的情况,正常退出返回0,反之是非0值

        $*:传递给程序的所有参数组成的字符串

3、实例一

        编写一个描述Shell程序中的位置参数为:$0、$#、$?、$*,程序名为test1。代码如下:

#! /bin/bash

echo "Program name is $0";
echo "There are totally $# parameters passed to this program";
echo "The last is $?";
echo "The parameter are $*";

注意,命令本身不计入参数内。

执行结果为:

4、实例二

        编写一个简单的删除程序,如删除文件名为a,则在终端输入命令为:test a,程序名为test2。

        可见,除命令外至少还有一个位置参数,即$#不能为0,删除不能为$1。程序如下:

#! /bin/bash

if test $# -eq 0 then
    echo "Please specify a file!"
else
    gzip $1        //对文件进行压缩
    mv $1.gz $HOME/dustbin      //移动到回收站
    echo "File $1 is deleted!"
fi

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猿核试Bug愁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值