shell和Makefile

shell介绍

shell是操作系统的终端命令行
(1)shell可以理解为软件系统提供给用户操作的命令行界面,可以说它是人机交互的一种方式
(2)我们可以使用shell和操作系统,uboot等软件系统进行交互。具体来说就我们通过shell给软件系统输入命令然后回车执行,执行完后又回到shell命令行可以再次输入命令执行
(3)上述的操作方式很好,但是有一定的缺陷。如要新建100个.c文件。最好的做法就是把创建的过程写成一个shell脚本,然后执行这个shell脚本程序,执行这个程序的效果和手工在命令行输入那些命令效果是一样的。
shell是一类编程语言
(1)编写shell脚本时使用的语言是shell语言,又叫脚本语言
(2)shell脚本其实就是一类语言,而不是一个语言
常用的shell语言:sh,bash,csh,ksh,perl,puthon
(1)在linux下常用的脚本语言其实就是bash,sh
(2)像perl,python这样的高级shell脚本语言,常用在网络管理配置领域
(3)脚本语言,在嵌入式中,主要用来做配置(配置的过程就是脚本语言来实现)
shell脚本的运行机制:解释运行
(1)脚本程序编写好源代码后可以直接运行(没有编译过程)
(2)shell程序是解释运行的,(顺序结构,从上到下,逐行运行)
(3)CPU实际只认识二进制代码,根本不认识源代码,脚本程序源代码其实也不是二进制代码,CPU也不认识,不能直接执行。只不过脚本程序的编译链接过程不是以脚本程序源代码为单位进行的,而是在脚本运行过程逐行的解释执行时才去完成脚本源程序转为二进制的过程(不一定是编译链接,因为这行脚本程序可能早就编译链接好了)

动手写第一个shell

编辑器,编译器,运行方法
(1)shell是文本格式的,只要是文本编辑器都可以。但是我们的shell是要在linux系统下运行的,所以换行符必须是’\n’,而windows下的换行符是"\r\n",因此windows中的编辑器写的shell不能在linux下运行。
(2)编译器 不涉及,因为shell是解释性语言,直接编辑就好了
(3)shell的运行方法:三种
第一种:./xx.sh,运行二进制可执行程序方案一样,这样运行shell要求shell程序必须具有可执行权限。chmod a+x xx.sh来添加执行权限
第二种 source xx.sh,source是linux的一个命令,这个命令就是用来执行脚本程序的,这样运行不需要脚本具有可执行权限
第三种 bash xx.sh ,bash是一个脚本程序解释器,本质上是一个可执行程序。这样执行相当于我们执行了bash程序,然后把xx.sh作为argv[1]传给他运行。
hello world 程序的解释
(1)shell程序的第一行一般都是,#!/bin/sh,这句好是以#!开始,后面加上一个pathname,这句话得到意思就是指定shell程序执行时被哪个解释器执行。所以我们这里写上/bin/sh意思就是这个shell将来被当前机器中/bin目录下的sh可执行程序执行。
注意:在ubuntu上面默认使用的解释器sh其实不是bash,而是dash。dash是ubuntu中默认使用的脚本解释器
(2)脚本中的注释使用#,#开头的行是注释行。如果有多行需要注释,每行前面都要加#(相当于C语言中的//)
(3)shell程序的征文,由很多行shell语句构成

#! /bin/bash
#	#开头的是注释
echo "hello world."

shell并不神秘
(1)shell就是把以前命令行中键入执行的命令写成程序。shell其实就是为了避免反复在命令行下手工输入而发明的一种把手工输入步骤记录下来,然后通过执行shell脚本程序就能再次复述原来记录的手工输入过程的一种技术。
(2)shell编辑完可以直接运行(不需要编译)

shell编程学习

shell中使用linux命令
(1)当前目录下创建文件夹dir ,dir下创建文件b.txt

#! /bin/sh
mkdir dir
cd dir
touch b.txt
cd ..

shell中的变量定义和引用
(1)变量定义和初始化。shell是弱类型语言(语言中的变量如果有明确的类型则属于强类型语言;变量没有明确类型就是弱类型语言),和C语言不同。在shell编程中定义变量不需要制定类型,也没有类型这个概念。
(2)变量定义时可以初始化,使用=进行初始化赋值。在shell中赋值的=两边是不能有空格的
注意:shell对语法非常在意,非常严格。很多地方空格都是必须没有或者必须有,而且不能随意没有空格。

#! /bin/sh
string="hello world."
echo $string

(3)变量赋

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值