linux 的shell 和 makefile 2017-2-22

来源:互联网 发布:淘宝唱片店正版 编辑:程序博客网 时间:2024/06/03 19:57

shell 是一种解释型的脚本语言,它是直接运行的命令,shell可以很方便的做一些自动化的操作。

写shell叫本的时候在首行加上#!/bin/bash,这句话告诉系统,这个文件需要使用bash解析器运行,也可以不加这一句但是必须指明所用的解析器比如:bin/sh filename

shell有很多的地方与c语言比较相似,他有变量 条件语句 循环语句等。

shell的变量

   shell的变量必须以字母开头后面可以是数字或者下划线,引用变量的时候需要在变量之前添加$

 shell的判断语句

  以这样的形式出现:

     if  [  $a -eq 10 ]

     then

      条件成立时执行

      else

       条件不成立时执行

   fi

注意if和[之间是有空格的,上面使用的是中括号,也可以使用圆括号,但是用中括号的时候以 -eq -ne -gt - ge -lt -le 分别表示等于 不等于 大于 大于等于 小于 小于等于,

使用圆括号的时候可以使用> < >= <= 来表达,它还可以用一些特殊的字符判断目录是够为空 环境变量是否存在等。。

shell的case语句

  他和C语言的switch有相同的功能,形式如下:

   case varName in

     1)  ;;

     2);;

     *)  ;;

  esac


    varNAME作为取值,它可以是变量或者常数,小括号表示一种模式当匹配到一种模式之后便会执行模式后面的语句直到遇到;;,;;相当于break,直接跳到结尾。*)所有的模式不匹配才会执行相当于deafault.

shell中像这样的命令 CMD = `pwd` 相当于在控制终端输入pwd返回值赋给CMD.

shell中以$1 $1 这样的形式表示输入的参数,$$这样表示的是当前shell的进程号。


makefile的规则很简单它只用目标和指令构成,指令前面使用tab键隔开,它用来描述生成目标的方式,了解了基本功能之后发现还有很强大的用法,比如可以执行函数像这样

$(),小括号里面可以使用函数,wildcard 可以执行通配符,比如可以使用它提取目录下所有的c文件列表,然后把c替换为o,这样为编写makefile提供了很大的方便。

#sample Makefile

objects := $(patsubst %.c,%.o,$(wildcard *.c))

 

foo : $(objects)

cc -o foo $(objects)


makefile还有很多强大的功能有待学习,真的是学海无涯,尤其是在作为一个IT屌丝男士,在茫茫的工具和方法中迷失了,现在发现只有深入了一个行业才能挣到钱,浮躁的人是不适合做IT工作的,但是学习是永不停止的。







0 0