C语言笔记(7)shell编程

本文对比编译型语言如C语言与解释型语言的特点,介绍Shell脚本的构成与执行原理,包括变量操作、命令行参数处理、注释规范、函数定义与调用等关键概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
编译型语言 : 例如:C语言, 只有写完代码后通过编译器进行编译,没有错误以后才能够,生成执行文件, 如果你有错误是不能生成执行文件,的 得先编译后执行. 编译语言用到了编译器, 不同的编译器生成的执行文件是不一样的.
例如 :我用gcc生成的文件运行在 x86的机器上, 如果我换成arm - gcc这个时候我所生成的执行文件只能在arm gcc上运行, 编译语言会受到编译器的限制
解释型语言 : 不需要代码编译通过之后再执行, 它是解释一行执行一行, 效率比较低
shell命令的本质就是 shell命令的有序集合
在这里插入图片描述
shell脚本是由命令组成,所以不需要编译器, 所以我只需要为文件赋予一个执行权限就可以了,赋予了执行权限以后将来我就可以在命令行上来去执行这个shell文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述打印的时候 echo $变量名 注意加上 $ 提示符
在这里插入图片描述
unset 删除变量的赋值
位置变量 也叫命令行参数, 咋写C语言的时候我们写main函数, main函数也是可以传参的 a.out 后面也是可以加参数的 如果我希望在执行脚本的时候 用户就提前给定一些变量的值的话,那么我们的这个位置的话也可以这么来处理 ,充分利用我们这个脚本的位置变量, 脚本当中的位置变量的话比较特殊, 用 $符号来标识,

在这里插入图片描述
输入命令的时候 空格为分隔符 , 这个 $# 不含./文件名本身的 , 跟c语言不一样,c语言会把这个./文件名也算上
./prog2.sh 29 hello 5.5 1 asd 所以输层的 $# 是5

在这里插入图片描述
在这里插入图片描述
我们利用 ${10}

在这里插入图片描述
注意 :$0是从脚本开始的, 从$1开始才是参数 ,如果参数大于两位数的时候 要用{}括起来
在这里插入图片描述
在这里插入图片描述
在编写C语言源代码时,应该多使用注释,这样有助于对代码的理解。在C语言中有两种注释方式:
一种是以/开始、以/结束的块注释(block comment);
另一种是以//开始、以换行符结束的单行注释(line comment)。

可以使用//分隔符来标注一行内的注释,也可以标注多行的注释。例如,在下列的函数原型中,省略号的意思是 open() 函数有第三个参数,它是可选参数。注释解释了这个可选参数的用法:

int open( const char *name, int mode, … /* int permissions */ );

可以使用//插入整行的注释,或者将源代码写成两列分栏的格式,程序在左列,注释在右列:

const double pi = 3.1415926536;       // pi是—个常量

在 C99 标准中,单行注释正式加入C语言,但是大部分编译器在 C99 之前就已经开始支持这种用法。有时候,其被称作“C++风格”的注释,但实际上,其源自于C的前身 BCPL。

在引号中,如果采用/*或//分隔一个字符常量或字符串字面量(string literal),它们都不会被视为注释的开始。例如,下面语句就没有注释:

printf("Comments in C begin with /* or //.\n" );

预处理器仅通过检查注释的结束符来检测注释中的字符,因此,不能嵌套块注释。然而,可以使用//注释包含单行注释的源代码:

/* 暂时注释掉这两行:
    const double pi = 3.1415926536;  // pi是一个常量
    area = pi * r * r;   // 计算面积
暂时注释到此 */

如果想要注释掉包含块注释的部分程序,可以使用条件预处理命令:

#if 0
  const double pi = 3.1415926536;   /* pi是一个常量      */
  area = pi * r * r ;  /* 计算面积     */
#endif

预处理器会把每个注释都替换成一个空格。因此,min/max/Value变成两个标记min Value。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
算术运算需要空格, 变量赋值不需要空格
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
cp复制命令的好处是,可以一并把文件的属性复制过去
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
条件语句 : 两路分支语句
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意空格不能少
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里的判断语句中 $1 你也可以写成 read 命令让用户自己输入文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1、可以带function fun() 定义,也可以直接fun() 定义,不带任何参数。
2、参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n(0-255
下面的例子定义了一个函数并进行调用:


#!/bin/bash
	# author:菜鸟教程
	# url:www.runoob.com

	demoFun(){
   	 echo "这是我的第一个 shell 函数!"
	}
	echo "-----函数开始执行-----"
	demoFun
	echo "-----函数执行完毕-----"

输出结果

-----函数开始执行-----
这是我的第一个 shell 函数!
-----函数执行完毕-----

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值