linux shell 脚本 - 给男友的家务清单

    如果 shell 是你的男友,那么,shell 脚本,便是给男友的家务清单。

 

    有一天,小红让男朋友 shell 做家务,于是,她就对 shell 说:“洗碗”,等 shell 洗完碗,她又对 shell 说:“换灯炮”,等 shell 换完灯泡,她又对 shell 说:“拖地”... ... ... 一轮家务下来,小红不停地发指令,不停地指挥做家务,比男朋友 shell 还辛苦。

    第二天,小红让男友友 shell 做同样的家务,于是,她发了同样的指令。

    第三天,... ... ... 第n天,日复一日,小红厌烦了这种重复的生活,于是,她列了一份清单,名为 HouseWork.sh,内容如下:

#!/bin/sh

echo "开始做家务了"
洗碗
换灯泡
拖地
…… ……
shutdown -h now
echo "做好了,洗澡睡觉"

    第n+1天,小红把家务清单递给 shell 男友(./HouseWork.sh),于是,男朋友快乐地按照清单开始工作了。

    这份清单,就叫做 shell 脚本(*.sh),在 window 下,叫做 批处理(*.bat)。

 

    这一篇,我们就来谈一谈,如何高效地发号施令,让男朋友每天都快乐地做家务。

 

    简单来说,shell 脚本,就是一系列的命令集合。

    1、基本格式;

    2、执行;

    3、语法;

 

    1、基本格式:就是命令的集合,跟在shell里面一条一条输指令是一样的。

#!/bin/sh                # shell脚本执行时被/bin/sh解释器执行。类似于“我的男朋友是 shell,这是他要做的事”。
    
boyfriend="I am a handsome man!"        #声明一个变量。要 shell 男友先赞美一下自已。
echo $boyfriend                #赞一下,shell说:"I am a handsome man!"。

echo "start doing housework..."        #shell 男朋友说:"start doing housework..."

mkdir housework                #建立一个文件夹,叫 housework
cd housework                    #进入刚建立的文件夹
mv -r /home/cloth/ ./        #把 cloth 文件夹拷进来
./washing                            #执行 washing 程序

echo "housework is finished."        #shell男朋友喊下:"housework is finished."

    2、执行:要让男友做家务,得把家务清单递给他,递家务清单的方法有三种。

        a、./HouseWork.sh,要求shell程序必须有可执行权限,chmod 0777 HouseWork.sh

        b、source HouseWork.sh,source是linux下一个命令,用来执行脚本程序,常用这个,不需要 .sh 有可执行权限。

        c、bashHouseWork.sh,bash是一个脚本解析器,相当于执行bash程序,HouseWork.sh是它的参数。

 

    3、语法:

        a、参数传递:

            shell是可以传递参数的,比如 ./HouseWork.sh 10 要求做10个家务。

                #,实际参数的个数

                $0,表示调用的shell

                $1,$2,$3,……,$n,第一个参数,第二个参数,第n个参数

        b、输出字符串:

                echo "we are rich men!"

                输出:we are rich men!

        c、变量定义、引用

                var=1413

               $(var)

        d、输出字符串 echo

                echo "hello!"

                var=1413

                echo $var

        e、调用linux命令

                直接执行:pwd;

                得到命令返回值:var4="`pwd`/include",注意``符号,是数字1旁边的那个~

        f、if else fi 语句

    if [ -f a.txt ]                                #这里 [ 后面和 ] 前面一定要加一个空格,必须是空格

    then

        echo "have a.txt file"

    elif [ -f b.txt ]                                # -f 表示判断是否有文件,-d 表示是否有目录

    then

        echo "have b.txt file"

    else

        echo "do not have file"

    fi

        g、比较两个字符串
 

  str1="luffy"

    str2="luffy1"

    str3="luffy2"

    if [ $str1 = $str2 ]                    #比较两个字符串,记得$str1 = $str2等号前后有空格

    then

        echo "$str1 = $str2"

    elif [ $str1 = $str3 ]

    then

        echo "$str1 = $str3"

    elif [ $str2 = $str3 ]

    then

        echo "$str2 = $str3"

    else

        echo "no any string is equal"

    fi

        h、比较数字大小
 

   num1=1314

    num2=1413

    if [ $num1 -eq $num2 ]            #比较数字大小 -eq(==),-gt(>),-lt(<),-ge(>=),-le(<=) 

    then

        echo "num1=num2"

    else

        echo "num1!=num2"

    fi

        i、判断字符串是否为空
 

    if [ -z $1 ]                                #-z 判断字符串是否为空

    then

        echo "param1 is null"

    else

        echo "param1 is $1"

    fi

        j、逻辑或、逻辑与

    if [ $1 = $2 -o $1 = $3 ]        #-o表示逻辑或,也可以写成 if[] || []

    then

        echo "P1=P2orP1=P3"

    else

        echo "P1!=P2andP1!=P3"

    fi


    [ -z $1 ] || echo "$1"        #if [  ] is false($1!=null),excute echo


    [ -z $1 ] && echo "null"       #if [  ] is true($1=null),excute echo

        k、for 和while

    #打印1,2,3,4,5

    for i in 1 2 3 4 5

    do

        echo "loop$i"

    done

    #ls 列出的所有文件。

    for i in `ls`

    do

        echo $i

    done

    #列出所有输入参数

    for i in $*

    do

        echo $i is param.

    done

    #分别打印出 i am a rich man !

    str="i am a rich man !"

    for i in $str

    do

        echo $i

    done

    #打印 1~13,[  ] 之间有空格,$(())有两层括号;

    i=1

    j=13

    while [ $i -le $j ]

    do

        echo $i

        i=$(($i+1))

    done

 

        j、echo 创建和追加文件

    echo "#include <stdio.h>

    int main(void)

    {

        printf("i am a rich man!\n");

    }" > testMain.c                                #创建 testMain.c

    echo "//It's a test file" >> testMain.c                  #追加字符串到 testMain.c

 

家务清单,全文完。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值