linux系统应用学习(四)--- shell 脚本和 makefile

一、shell脚本编程

Shell脚本是一些命令的集合,可以实现一键处理。是一个文件(批处理文件)

Shell  javascript  python

shell编程--非编译型语言,必须有命令行解释器。

Shell脚本文件是以xxx.sh结尾的。

第一行  #!/bin/bash     //指定命令行解释器(我们的终端是bin下的bash)

#   //注释

每一行是一条语句

1.语法

  • 变量

变量不用定义,可以直接使用。

num=10    //没有类型,=等号前后不能有空格。

$num      //取变量的值

${num}    //num后面还有语句的话要加{}。

echo  ${num}aaaa    //输出

read    //输入

“”         echo  “${num}aaaa”    打出来是10aaaa

‘’          echo  ‘${num}aaaa’     打出来是 ${num}aaaa

  • 特殊变量

$0  $1  $2.....  //记录命令行的传参

$#                             //命令行参数的个数(不包括$0)

$*和$@               //命令行所有参数(不包括$0)

$?          //上一个命令是否执行成功,成功是0.失败是1

2.运算表达式

算术运算符   +-*/

关系运算符  >  <  ==

逻辑运算符  &&  ||   !

取表达式的值 $[表达式]或者((表达式))

n3=[ ${n1}+${n2} ]或者n3=$((n1+n2))

test  变量1  -eq  变量2   =

(用echo $?查看结果,成功为0,失败为1.用双括号的话则真为1,假为0)

test  变量1  -gt  变量2   >       (-g的意思是大于greater)

test  变量1  -lt  变量2   <              (test意思可理解为判断)

test  变量1  -ge  变量2   >=

test  变量1  -le  变量2   <=

test  变量1  -a  变量2   &&

test  变量1  -o  变量2   ||

3.数组

数组名=(元素1,元素2)

num=(1  2  3  5)

${num[下标]}   //取元素的值

${num[@]}      //取数组中元素所有值

${#num[@]}     //取数组中元素个数

${num[@]:1:3}   //2,3,5取下标1后面的3个值

4.逻辑语句

1)分支语句  if  case

if语句语法

格式:

If   [表达式1]   <空格是必须的,参考kk/0918/class/07if.sh>

then     语句1

elif [表达式2]

then  语句2

else   语句

fi

 

case语句  格式:

case 变量 in

字符1)    //这里加不加引号默认都是输入了一个字符

语句1

;;

字符2)

语句2

;;

*)

语句3

;;

esac

2)循环语句

for 循环

方式一:

for 循环变量 in 循环列表

do

 语句

done

for  i  in  1 2 3 4 5 6 7

do

语句

done

方式二:

for((循环变量;判断条件;自增/减))

   do 循环体

done

 

while循环:

while[表达式]

do

循环体

done

5.函数

函数定义:

function 函数名 ( )

{

函数体

}

使用

函数名 要传的参数

 

二、Makefile 工程管理工具

Makefile 文件制定了源文件编译规则

在命令行中执行make 则会根据Makefile文件去编译。

Makefile文件编写规则:

目标:是最终生成的目标文件

依赖:目标所依赖的文件

命令:生成目标所要执行的操作

格式:

目标:依赖

<tab>命令

#make

注意:

  1. 执行make时,会寻找Makefile文件中第一个目标去执行,如果依赖文件存在,直接执行命令;如果依赖文件不存在,继续以依赖文件为目标继续向下找。
  2. make 后输入目标,直接在Makefile中找对应的目标执行
  3. 再次make时,若源文件没有改动,则编译器不再编译
  4. Makefile有一个自动推导功能,如果没有写依赖文件编译规则,但当前目录有源文件,Makefile会自动编译。

1.变量

定义变量

OBJ=main.o  add.o  sub.o  print.o

main:$(OBJ)

gcc 

特殊变量

$@ :目标文件

$^ :所有依赖文件

$< :目标后第一个依赖文件

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值