Shell基础

一、shell

用户和内核之间的一座桥梁即代理,接收用户的操作,代码指令来反馈给内核,让内核来响应。

二、解析器种类

1、解析器查看命令: cat /etc/shells

重要的是sh和bash。

2、Bash和sh的关系:

使用sh调用执行脚本,相当于打开了bash的POSIX标准模式 (等效于bash的 --posix 参数)。一般来讲,sh是bash的“子集”。其实sh调用的就是bash。

3、Centos默认的解析器是bash

查看命令:echo $SHELL

4、脚本格式

脚本格式:通常以#!/bin/bash开头(指定解析器)

5、脚本执行方式

1)、采用bash或sh+脚本的相对路径或绝对路径(不用赋予脚本+x权限)

如:sh helloworld.sh 或 sh /root/aa/helloworld.sh;bash helloworld.sh 或 bash /root/aa/helloworld.sh

2)、采用输入脚本的绝对路径或相对路径执行脚本(必须具有可执行权限+x)

(a)首先要赋予helloworld.sh 脚本的+x权限

命令:chmod 777 helloworld.sh 或chmod +x helloworld.sh

(b)执行脚本相对路径 ./helloworld.sh  和 绝对路径/root/aa/helloworld.sh

第一种执行方法,本质是bash解析器帮你执行脚本,所以脚本本身不需要执行权限。第二种执行方法,本质是脚本需要自己执行,所以需要执行权限

6、shell交互界面: who

登入帐号 (root),使用的终端机 (tty1),登入时间

计算用户个数一个

三、变量

1、系统变量

使用:echo加系统变量,如 echo $HOME

1)、$HOME: 家目录

 

2)、$PWD:路劲

 

3)、$SHELL:解析器

 

4)、$USER:用户名


2、自定义变量

1)、基本语法

a)定义变量:变量=值

b)撤销变量:unset 变量

c)声明静态变量:readonly变量,注意:不能unset

2)、变量定义规则

a)变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写。

b)等号两侧不能有空格

c)在bash中,变量默认类型都是字符串类型,无法直接进行数值运算。

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

3)、案例实操

a)定义变量a

 

b)给变量a重新赋值

 

c)unset撤销变量a,撤销后为空

 

d)声明静态的变量a=2,不能unset

 

e)在bash中,变量默认类型都是字符串类型,无法直接进行数值运算

 

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

 

g)可把变量提升为全局环境变量,可供其他shell程序使用。Export变量名。


 

3、特殊变量

1)$n

a)基本语法:$n (功能描述:n为数字,$0代表该脚本名称,$1-9代表第一到第九个参数,十以上参数使用{}包含例:{10}

b)输出该脚本文件名称。输入参数1和输入参数2的值

 

2)$#

a)基本语法:$# (功能描述:获取所有输入参数个数,常用于循环)。

b)获取输入参数个数

 

3)$*和$@

a)基本语法:

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

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

b)案例:打印输入的所有参数

 

4)$?

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

b)案例:判断脚本是否正确执行

 

四、运算符

格式为: ‘expr空格n空格 (+、-、\*、/、%) 空格n’

两个数相加(注意使用的是反引号 ` 而不是单引号 '):

1、加

1)expr 2 + 2

2、减

1)expr 4 - 2

 

3、乘

1)expr 4 \* 2

 

4、除

1)expr 4 / 2

 

5、余

1)expr 4 % 2

 

五、流程控制

1、if

a)if[ $a == $b ] then echo "a 等于b" fi

输出 :

a小于b

b)if else 语句经常与 test 命令结合使用

2、for

3、while

b)read读取键盘信息

c)无限循环

4、untile循环

until 循环执行一系列命令直至条件为 true 时停止。

5、case ..... esac

case ... esac 为多选择语句,与其他语言中的 switch ... case 语句类似,是一种多分枝选择结构,每个 case 分支用右圆括号开始,用两个分号 ;; 表示 break,即执行结束, 跳出整个 case ... esac 语句,esac(就是 case 反过来)作为结束标记。

可以用 case 语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。

 

6、break命令

break命令允许跳出所有循环(终止执行后面的所有循环)。

下面的例子中,脚本进入死循环直至用户输入数字大于5。要跳出这个循环,返回到shell提示符下,需要使用break命令。

7、continue

continue命令与break命令类似,只有一点差别,它不会跳出所有循环,仅仅跳出当前循环。

6、Read读取控制台输入

7、函数

1、可以带function fun() 定义,也可以直接fun() 定义,不带任何参数。

2、参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n

带return

函数返回值在调用该函数后通过 $? 来获得。

函数参数

Shell工具

1、Grep

2、Cut

3、Sort

4、Unlq

5、Tee

6、Diff

7、Paste

8、Tr

9、Sed

10、Awk

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值