Linux (Ubuntu) Make file 基本语法和shell脚本基础(入门必看)

简介: Linux (Ubuntu) Make file 基本语法和shell脚本基础(入门必看)

一.Make file 规则格式


Make file 里面是由一系列规则组成的,例如


目标···...:依赖文件集合......


       命令1


       命令2


       ......


例如:


main:main.o  input.o  calcu.o


       gcc  -o  main  main.o   input.o  calcu.o


二.什么是shall脚本


       shall脚本类似windows 的批处理文件,shall脚本就是将连续的命令写成一个文件,shall脚本提供数组,循环,条件判断等功能,shall脚本一般Linux运维或者系统管理员要掌握,作为嵌入式开发人员,只需要掌握shall最基础的部分即可。


三.shell 脚本写法


       shall脚本是一种纯文本文件,命令从上而下,一行一行的开始执行,shell脚本扩展名为.sh shell脚本第一行一定要为:


#!/bin/bash


表示使用 bash


四.shell 脚本语法


(1)第一个shell 脚本:

编写:

b436ad67156a4957a59f087fa86dc0d7.png

执行:


f2bf1a7a66e64b94a9cf8c77bae99295.png


(2)交互式shell脚本

编写:


4f9bf17e0b2a48549f3ca170344cdf33.png


运行:


763fff401ece486790f3f6ad4085d3dd.png


-a:将分裂后的字段依次存储到指定的数组中,存储的起始位置从数组的index=0开始。

-d:指定读取行的结束符号。默认结束符号为换行符。

-n:限制读取N个字符就自动结束读取,如果没有读满N个字符就按下回车或遇到换行符,则也会结束读取。

-N:严格要求读满N个字符才自动结束读取,即使中途按下了回车或遇到了换行符也不结束。其中换行符或回车算一个字符。

-p:给出提示符。默认不支持"\n"换行,要换行需要特殊处理,见下文示例。例如,"-p 请输入年龄,身高:"

-r:禁止反斜线的转义功能。这意味着"\"会变成文本的一部分。

-s:静默模式。输入的内容不会回显在屏幕上。

-t:给出超时时间,在达到超时时间时,read退出并返回错误。也就是说不会读取任何内容,即使已经输入了一部分。

-u:从给定文件描述符(fd=N)中读取数据。


d2113d4fda0d49b68675d5d0b1233f03.png

7ff74adf71e04e37829f585ded80434b.png


(3)shell 脚本的数值计算

       shell 仅支持整型,数值计算使用 $((表达式))


编写:


46301c4e35a248d29b8d7296e3752fd9.png


运行:


232ffed9cc584c7bb2ed802ae0c76b7f.png


(4)test 命令

            test命令用于查看文件是否存在,权限等信息,可以进行数值,字符,文件三方面的测试


&&和||命令:


cmd1 && cmd2   当cmd1执行完毕且正确,那么cmd2开始执行,如果cmd1执行错误聪cmd2不执行


cmd1||cmd2 当cmd1执行完毕且正确,那么cmd2不执行,反之cmd2执行


数值测试:


-eq 等于则为真

-ne 不等于则为真

-gt 大于则为真

-ge 大于等于则为真

-lt 小于则为真

-le 小于等于则为真

num1=100 num2=100
if test $[num1] -eq $[num2]
then
        echo 'The two numbers are equal!'
else
         echo 'The two numbers are not equal!'
fi

输出:

The two numbers are equal!

数值测试 字符串测试 文件测试 内容过多 点击链接了解详细  

(5)中括号【】判断符

       【】与test 相似    【】中只能输入== 或者!=

例如

["$firststr" == "$secondstr"] && echo"firststr == secondstr" || echo "firststtr !=secondstr"

(6)默认变量

$0~$n,表示shell脚本的参数,包括shell脚本命令本身,shell脚本命令本身为$

$#: #表示最后一个参数符号

$@: 表示$1,$2,$3......

#!/bin/bash
echon "file name:" $0        //shell 脚本名字
echo "total param num:" $#     //有多少个参数 
echo "whole param" $@         //整个参数的内容
echo "first param:" $1        
echo "second param:" $2

运行:

dbf38da6907d427ba989174d7b9a0a2b.png

相关文章
|
18天前
|
机器学习/深度学习 安全 网络协议
Linux防火墙iptables命令管理入门
本文介绍了关于Linux防火墙iptables命令管理入门的教程,涵盖了iptables的基本概念、语法格式、常用参数、基础查询操作以及链和规则管理等内容。
178 73
|
24天前
|
Ubuntu Linux 编译器
在ubantu/linux系统出现parse error(语法错误)
本文讨论了在Ubuntu/Linux系统中遇到"parse error"(语法错误)的问题,并提供了将非声明语句移动到所有声明语句下方以解决该问题的解决方案。
在ubantu/linux系统出现parse error(语法错误)
|
16天前
|
Shell Linux 开发工具
linux shell 脚本调试技巧
【9月更文挑战第3天】在Linux中调试shell脚本可采用多种技巧:使用`-x`选项显示每行命令及变量扩展情况;通过`read`或`trap`设置断点;利用`echo`检查变量值,`set`显示所有变量;检查退出状态码 `$?` 进行错误处理;使用`bashdb`等调试工具实现更复杂调试功能。
|
29天前
|
Java Shell Linux
【Linux入门技巧】新员工必看:用Shell脚本轻松解析应用服务日志
关于如何使用Shell脚本来解析Linux系统中的应用服务日志,提供了脚本实现的详细步骤和技巧,以及一些Shell编程的技能扩展。
23 0
【Linux入门技巧】新员工必看:用Shell脚本轻松解析应用服务日志
|
27天前
|
存储 Linux Shell
【应用服务 App Service】App Service For Linux 中如何挂载一个共享文件夹呢? Mount Azure Storage Account File Share
【应用服务 App Service】App Service For Linux 中如何挂载一个共享文件夹呢? Mount Azure Storage Account File Share
|
29天前
|
监控 Shell Linux
在Linux中,如何使用shell脚本检测磁盘使用率?
在Linux中,如何使用shell脚本检测磁盘使用率?
|
29天前
|
Shell Linux 开发工具
在Linux中,如何编写shell脚本将当前目录下大于10K的文件转移到/tmp目录下?
在Linux中,如何编写shell脚本将当前目录下大于10K的文件转移到/tmp目录下?
|
29天前
|
缓存 Shell Linux
在Linux中,bash shell 中的 hash 命令有什么作用?
在Linux中,bash shell 中的 hash 命令有什么作用?
|
29天前
|
Unix Shell Linux
在Linux中,什么是Shell脚本,并且如何编写它。
在Linux中,什么是Shell脚本,并且如何编写它。
|
Shell Linux Windows
Shell入门之概念
1、一切皆是文件: 在bash Shell 中一切皆是文件,不管是我们认为的文本文件,还是那些文件夹的东西,在这里都是文件,Linux只管比特和字节流,而不关心他们最终组成了什么格式,这些工作交给在Linux 上的运行的软件来检测和鉴别。
759 0