shell基础

一、shell概述

(1)Shell是一个命令行解释器,它接收应用程序/用户命令,然后调用操作系统内核。

二、shell解析器

1、查看系统的默认的shell解析器

sudo cat /etc/shells
=====================
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin

三、shell脚本入门

1、脚本格式

(1)脚本以#!/bin/bash开头(指定解析器)

2、脚本的常用执行方式

(1)采用bash或sh+脚本的相对路经或绝对路径(不用赋予脚本可执行的权限)
(2)采用脚本的相对路经或绝对路径执行脚本(脚本必须有可执行权限)

四、shell中的变量

1、系统变量

(1)常用系统变量
	$HOME	---当前用户的家目录
	$PWD    ---当前用户所在的绝对路径
	$SHELL  ---系统的默认的shell解析器
	$USER   ---当前使用系统的用户

2、特殊变量

(1)$n
	基本语法:$n
	
	功能描述:n为数字,$0代表该脚本名称,$1---$9代表第一到第九个参数,十以上的参数需要用大括号包含,如${12}
	
(2)$#
	基本语法:$#
	
	功能描述:获取所有输入参数个数,常用于循环

(3)$*
	基本语法:$*
	
	功能描述:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体

(4)$@
	基本语法:$@
	
	功能描述:这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待

(5)$?
	基本语法:$?
	
	功能描述:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;
					  如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了

3、自定义变量

(1)基本语法
	定义变量:变量名=值(=左右不能有空格)		eg:A=1
			
	撤销变量:unset 变量

	声明静态变量:readonly 变量名=值(不可以被撤销)

	把变量提升为全局变量:export 变量名

(2)变量定义规则
	变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写

	等号两侧不能有空格
	
	在bash中,变量默认类型都是字符串类型,无法直接进行数值运算。

	变量的值如果有空格,需要使用双引号或单引号括起来。

五、运算符

(1)基本语法
	$((运算式))		或		$[运算式]
	expr +	,-	,	\*	,/	,%		加,减,乘,除,取余(expr运算符之间要有空格)
eg1:计算9-2
expr 9 -2
expr: 语法错误
expr 9 - 2
7

eg2:计算(2+3)*4
expr `expr 2 + 3` \* 4
20

s=$[(2+3)*4]
echo $s

六、条件判断

(1)基本语法
	[ condition ]			(condition前后有空格)
	注意:条件非空即为true,[ jingbu ]返回true,[]返回false

(2)常用判断条件
	两个整数之间比较
		=字符串比较
		-eq等于(equal)
		-ne不等于(Not equal)
		-lt小于(less than)			-le 小于等于(less equal) 
		-gt大于( greater than)		-ge大于等于( greater equal)

	按照文件权限进行判断
		-r有读的权限(read)
		-w有写的权限( write)
		-x有执行的权限( execute) 

	按照文件类型进行判断
		-f 文件存在并且是一个常规的文件(file) 
		-e 文件存在( existence)
		-d文件存在并是一个目录(directory)

七、流程控制

1、if判断

(1)基本语法
	if [ 条件表达式 ] ;then
		程序主体
	fi
	或
	if [ 条件表达式 ]
		then
			程序主体
	fi
	注意:
	[条件判断式],中括号和条件判断式之间必须有空格
	if后要有空格

2、case语句

(1)基本语法
	case $变量名 in
		"值1") 
		如果变量的值等于值1,则执行程序1 
		;;
		"值2") 
		如果变量的值等于值2,则执行程序2 
 		;;
		*)
		如果变量的值都不是以上的值,则执行此程序
		;;
	esac

3、for循环

(1)基本语法
	for(( 初始值;循环控制条件;变量变化))
		do
			程序主体
		done

八、read读取控制台输入

(1)、基本语法
	read (选项)(参数)
	选项:
		-p:指定读取值时的提示符;
		-t:指定读取值时等待的时间(秒)
	参数:
		变量:指定读取值的变量名

九、shell工具

1、cut

(1)基本语法
	cut [参数] [文件名]

(2)使用说明
	cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。
	必须指定 -b、-c 或 -f 标志之一。
	
(3)参数
	-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
	-c :以字符为单位进行分割。
	-d :自定义分隔符,默认为制表符。
	-f :与-d一起使用,指定显示哪个区域。
	-n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的
		 范围之内,该字符将被写出;否则,该字符将被排除

2、sed

(0)说明
	sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”,
	接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。
	接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。

(1)基本语法
	sed [选项] 'command' 文件名

(2)选项
	-e			---			直接在指令模式上进行sed的动作编辑
	-n			---			仅显示处理后的结果

(3)命令功能描述
	a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)
	c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
	d :删除,后面不需要接东西
	i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
	p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
	s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法

3、awk

(0)说明
	一个强大的文本分析工具,把文件逐行的读入,以空格为默认分隔符将每行切片,
	切开的部分再进行分析处理。

(1)基本语法
	awk [选项参数]‘pattern1 {action1}pattern2 {action2}...' filename
		pattern:表示AWK在数据中查找的内容,就是匹配模式
		action:在找到匹配内容时所执行的一系列命令

	参数
		-F			---			指定输入文件折分隔符.
		-v			---			赋值一个用户定义变量

4、sort

(1)说明
	将文件进行排序,并将排序结果标准输出

(2)基本语法
	sort 【选项]	文件名
	-n 依照数值的大小排序
	-r 以相反的顺序来排序
	-t 设置排序时所用的分隔字符
	-k 指定需要排序的列
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值