嵌入式linux系统c高级课程笔记u

2023/3/20 来源:不详 浏览次数:

北京白癜风医院 http://disease.39.net/bjzkbdfyy/171015/5762961.html

Linux系统及C高级

什么是shell

shell它是命令行解析器。

(1)sh:(全称BourneShell)是UNIX最初使用的shell,

而且在每种UNIX上都可以使用。BourneShell在shell

编程方面相当优秀,但在处理与用户的交互方面做得不如

其他几种shell。

(2)csh:是一种比BourneShell更适合的变种Shell,

它的语法与C语言很相似

(3)ksh:集合了CShell和BourneShell的优点并且

和BourneShell完全兼容。

(4)bash:LinuxOS默认的,它是BourneShell的扩展。

与BourneShell完全兼容,并且在BourneShell的基

础上增加了很多特性。可以提供命令补全,命令编辑和命

令历史等功能。它还包含了很多CShell和KornShell

中的优点,有灵活和强大的编辑接口,

同时又很友好的用户界面

什么是shell脚本

它本身是一个以sh结尾的文件。在这个文件中就是命令的

集合以及一些复杂的逻辑语句。

#!/bin/bash

作用:指定解析这个脚本文件的解析器是bash

练习:

1.在自己的用户主目录下新建两个子目录subdir1subdir2

2.将/etc/passwd文件拷贝到subdir1,将/etc/group拷贝到subdir2

3.将subdir2重命名为subdir

4.对subdir1进行打包并且压缩成xz格式

5.将打包后的xz格式文件移动到subdir目录下

6.解压subidr目录下的压缩格式文件

7.查看subidr目录下所有的文件

shell脚本是否需要编译?

shell脚本文件是不需要进行编译的,原因是

shell是一种解析语句

如何执行shell脚本?

./脚本名(chmod脚本名.sh)

bash脚本名

source脚本名

上述三者执行脚本的时候的区别?

1../执行脚本的时候需要权限,

bash/source执行脚本的时候不需要权限

2../和bash在执行脚本的时候,系统会自动新开一个

子终端,子终端我们看不到,在子终端执行完之后,将

执行的结果返回给当前终端。source解析脚本的时候

是在当前终端解析的。

shell中变量

在shell中变量不需要定义,也没有数据类型,直接使用即可。

shell中的变量的变量名和c语言类似。

1.不能和shell中的关键字重复

testifwhileechocat

2.变量名一般写成大写的

3.变量名命名格式数字,字母,下划线,

不能以数组作为开头

变量引用?

$变量名或者${变量名}

$()错误的用法

变量赋值?

变量再被赋值的时候,都是字符串,就没有

整形,字符型,字符串类型,浮点类型之分

VAR1=helloworld(一句话结束不需要向c一样加;)

VAR2=helloworld$VAR1

VAR3=helloworld$VAR1

注意:

1.在赋值的时候=前后不允许有空格

2.如果在赋值的时候没有或,赋值的字符串是不允许有空格的

3.在赋值的时候,可以有空格,但是不能够引用变量

4.在赋值的时候,可以有空格,也能够引用变量,可以识别转译字符

echo命令:

echo$变量名

#打印变量的内容并会加上换行

echo-n$变量名

#打印变量的内容,不会加上换行

echo-e$变量名

#打印变量的内容并会解析转译字符\n

shell中的注释:

#单行注释

:EOF

被注释掉的多行

EOF

:!

被注释掉的多行

!

练习:

使用两个变量去承接HOME和PATH的值

将上述的两个变量交换,并将交换后

的内容显示出来

清除变量?

unset变量名#(注意不能再变量前加$)

位置变量?

$0$1$2$3...$9${n}

如果在执行脚本的时候使用的是./

$0=./05var.sh

如果在执行脚本的时候使用的是bash

$0=05var.sh

如果在执行脚本的时候使用的是source

$0=bash

$1:命令行的第一个参数

$2:命令行的第二个参数

...

$

和$*命令行中所有参数的内容,不包含文件名

$#命令行参数的个数,这个值不包含文件名这个成员

$?:1.程序上一步执行的结果,如果是0,表示执行成功了

如果是1,表示执行失败了。

2.可以用来获取shell中函数的返回值

$$:获取执行这个脚本时候的进程号(ps-aux)

变量的作用域问题?

local变量名

如果变量前不加local,默认的就是全局变量,

如果添加了local只在{}内部有效

只读变量?

readonly变量名=初值

只读变量一定要赋初值,否则无意义。

给变量赋值命令的结果?

VAR1=`ls`(注意这不是单引号,是~对应的符号)

VAR2=$(ls)

注意上面:``或者$()这叫做命令置换

转载请注明:
http://www.wanruiguanye.com/bzhl/77435565.html
  • 上一篇文章:

  • 下一篇文章:
  • 网站首页 版权信息 发布优势 合作伙伴 隐私保护 服务条款 网站地图 网站简介

    温馨提示:本站信息不能作为诊断和医疗依据
    版权所有 2014-2024
    今天是: