假期周进度报告二:shell编程

一、说在前面

1、本周主要学习了shell编程

2、下周主要学习hadoop的安装和简单使用

二、shell编程

1.shell是什么
Linux操作系统的核心是kernal(内核)!
当应用程序在执行时,需要调用计算机硬件的cpu,内存等资源!
程序将指令发送给内核执行!
为了防止程序发送一些恶意指令导致损坏内核,在内核和应用程序接口之间,设置一个中间层,称为shell!

本质上来说:
shell: 一个可以解释shell规定的语法命令的解释器!
解释器负责将应用程序发送的指令,进行检查,合法后交给内核解释执行!返回结果!

shell命令: shell解释器要求的指定语法编写的命令!

shell脚本: 多条shell命令,可以编写在一个文件中,文件中的指令,可以按照顺序执行!
将这个文件称为shell脚本!

2.shell中的解释器
使用 $SHELL变量查看当前系统默认的解释器类型!

shell支持多种不同风格的解释器,通过/etc/shells文件查看!

默认使用 /bin/bash作为shell命令解释器!

在终端中输入: cat /etc/shells
等价于/bin/bash -c 'cat /etc/shells'.
默认/bin/bash必须接一个脚本,作为输入!如果是一条命令,需要加-c (command)

3. linux中的常用目录
/bin: linux用户常用的命令
cd
echo
pwd
/sbin(super user bin): root用户(管理员)使用的常用命令!
对整个机器的管理命令!
开启网络服务: service network start

4.命令的执行
-bash: faefaw: command not found : 当前命令不在当前用户的环境变量!

查看: echo $PATH

5.脚本的编写要求
①声明: #!/bin/bash
②正文: 必须是shell解释器能否解释的命令

6.脚本的执行
① bash /sh + 脚本
特点: 新开一个bash执行脚本,一旦脚本执行完毕,bash自动关闭!
② ./脚本,前提是当前用户对脚本有执行权限,使用当前默认的解释器执行脚本
特点: 新开一个bash执行脚本,一旦脚本执行完毕,bash自动关闭!
③ source / . +脚本 使用当前默认的解释器执行脚本,并不要求当前用户对脚本有执行权限
特点: 在当前bash执行脚本

三、变量操作

1.基本操作

增: 变量名=变量值

删: unset 变量名

改: 变量名=变量值

查: echo $变量名
查看当前bash所有定义的变量: set

2.关键字
特殊关键字:
readonly : 用来修饰一个只读(不能修改,删除)变量!
export: 导出!将一个变量提升为全局变量!
局部变量: 默认变量只在定义变量的bash中有效!
如果希望在bash-a访问bash-b中定义的变量!
要求: ①bash-b不能关闭
②让bash-b将变量提升为全局变量,才能访问到!

注意: ①变量赋值时,值全部以字符串存在,无法进行运算!
②赋值的值中有空格,需要使用引号引起来
单引号: 不能识别$等特殊字符,不能脱义
双引号: 可以脱义$
③``,作用是将引号中的命令执行的结果赋值给变量
`命令` 等价于 $(命令)


对象0X1234 B{String name="jack"}
对象A{
B b=0X1234
void hello(){
sysout(B.name)
}



3.变量的生命周期:
在第一次新增时产生
变量在执行unset时,撤销,失效!
关闭当前bash,所有定义的变量也不会存在!

4.特殊变量
$?: 上一条命令的返回值!在bash中,如果返回值为0,代表上一条命令执行成功!
$#: 参数个数
$*: 参数列表。 在使用 "$*"时,将整个参数列表作为一个元素!
$@: 参数列表
$0-n: $0:脚本名
$1-$n: 第n个参数
获取第10以上的参数,${n}

四、awk

1. 关键字
print: 向屏幕输出内容
$1-$n: 第n列
BEGIN: 代表开始读取文件所遇内容之前,做什么事! 初始化代码块
END: 代表开始读取文件所有内容之后,做什么事! 结束代码块
FILENAME: 文件名
NR: 读的当前行的行号
NF: 读的当前列的列号


原文地址:https://www.cnblogs.com/20183544-wangzhengshuai/p/13658122.html