shell与makefile

在这里插入图片描述

一、什么是shell脚本

Linux的命令的集合,称为shell脚本

通常步骤:

1.在ubuntu系统下合适的路径下 创建以.sh结尾的文件,使用vi编辑器打开编辑shell脚本;

2.使用chmod更改本脚本的权限为可以执行,通常是

chmod +x 脚本名称

3.命令行使用以下命令执行脚本

./脚本名称				(这一个是常用的,只记这一个就可以了)
bash 脚本名称

二、shell语法

1.首行需要加上:

#!/bin/bash

告诉系统使用什么解释器来解释之后的代码

2.变量

#!/bin/bash

COUNT=1
echo COUNT = $COUNT

# date是显示日期的命令,` ` 符号是将其以命令对待,如果不加,则DATE变量的值就是date,注意:` `符号在最左上角的ESC下面一格
DATE=`date`
echo DATE = $DATE

# unset是将变量设置为我无效,再次使用则会出错
unset COUNT
#echo COUNT = $COUNT
                                                                                                    
#命令行参数,两位数的用大括号
echo 0-----$0
echo 1-----$1
echo 2-----$2
echo 3-----$3
echo 4-----$4
echo 5-----$5
echo 6-----$6
echo 7-----$7
echo 8-----$8
echo 9-----$9
echo 10-----${10}

在这里插入图片描述

3.read输入

read的 -p选项是在屏幕上打印提示信息,year month day等都是变量

#!/bin/bash                                                                                         

#echo "input year month day"
read -p "input year month day " year month day 	#-p选项是输入前的提示
echo $year-$month-$day

4.expr算数运算

#!/bin/bash                                                                                         

read -p "input tow number " val1 val2
num=`expr $val1 + $val2`  # expr命令是运算命令,说明后面的式子是数学运算,expr后面和加号前后需要有空格
echo +:$num

#expr $val1 + $val2是命令,所以需要` `符号包裹
num=`expr $val1 - $val2`    #减法 
echo -:$num
num=`expr $val1 \* $val2`   #乘法 
echo *:$num
num=`expr $val1 / $val2`    #除法 
echo /:$num
num=`expr $val1 % $val2`    #求余数 
echo %:$num

5.test命令

在这里插入图片描述

6.if

#!/bin/bash 

if test -f $1
then
    echo $1 is a file 1
fi

#完整的if语句
if test -f $1
then                #if判断完之后,需要执行的语句
    echo $1 is a file 2
elif test -d $1             #相当于else if  #后面的test命令表示判断$1是不是目录
then
    echo $1 is a dir
else                #就是C语言的else
    echo $1 nothing is it
fi                  #结束的标记

#完整的if语句
if [ $2 -eq 0 ]         #中括号前后需要有空格,-eq表示判断是否相等
then
    echo "$2 = 0"
elif [ $2 -gt 0 ]       #是否大于0
then
    echo "$2 > 0"
else                
    echo "$2 < 0"
fi                  #结束的标记

7.case

#!/bin/bash                                                                                         

#C语言中的 switch case
case $1 in      #判断$1, 
    1|2|3)      #如果是1或者2或者3的,  )右括号就是一个符号,没什么特殊意义
        echo "<3"
        ;;          #相当于break,但是不能删除
    4|5|6)
        echo "<6"
        ;;
    *)          #星号是配符号的意思,表示所有情况
        echo ">6"
        ;;
esac   #结束标志

8.for循环

#!/bin//bash

for val in 1 2 3 4 5 
do                                                                                                  
    echo $val
done

echo ============================

#功能同上
for((val=1; val<=5; val=$val+1))
do
    echo $val
done

echo ============================
for val in `ls`
do
    echo $val
done

9.while循环

#!/bin/bash                                                                                         

NUM=1
while(($NUM < 6)) 
do
    echo $NUM
    NUM=`expr $NUM + 1`
done


echo ====================
#效果跟上边一样
NUM=1
while [ $NUM -lt 6 ] 
do
    if [ $NUM -eq 4 ] 
    then
        NUM=`expr $NUM + 1`
        continue 
        #break
    fi  
    
    echo $NUM
    NUM=`expr $NUM + 1`
done

10.function函数

#!/bin/bash

fun()
{
    lacal A=2       #变量前面加上local 表示将变量设置为局部变量,否则就是全局变量
    echo 1----$1	#$1表示函数的第一个参数
    echo 2----$2
    echo "Hell World"
    return `expr $1 + $2` 	#返回值
}

fun 4 5 
echo $?         #$?是fun的返回值,只在调用函数后一句使用才有作用
echo $A

三、Makefile

背景:main.c文件使用了add.c文件的函数

最简单示例

add:main.o add.o 

main.o:main.c		#.o文件依赖.c文件,其下隐藏有cc -c -o main.o main.c命令
add.o:add.c			#.o文件依赖.c文件,其下隐藏有cc -c -o add.o add.c命令

.PHONY:clean        #防止当前目录下有clean文件导致该目标不能被使用,伪目标
clean:
    rm -rf add

升级

add:main.o add.o		#当前目录下,有main.c和add.c则会自动去生成main.o和add.o依赖文件,然后自动生成目标文件(目标						 #文件需要和依赖文件其中之一有相同的名字)

.PHONY:clean        #防止当前目录下有clean文件导致该目标不能被使用,伪目标                           
clean:
    rm -rf add

在这里插入图片描述
在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值