Linux_Shell进阶

Shell进阶

1.变量(重点)

1.1变量的含义

在一个脚本周期内,其数可以发生改变的量就是变量

脚本周期:一个脚本周期们可以简单的理解为当前的shell文件

变量是shell中不可或缺的一部分,也是最基础,最重要的组成部分

1.2变量的定义与使用

变量先定义后使用

定义形如:class_name=”python”

使用形如:echo $class_name

变量就是由两部分组成,一个是变量名(左边),另外一部分是变量的值(右边)

变量名和变量是什么关系?

变量名和变量值是使用和被使用关系,我们的变量名来使用变量值

注意:在使用变量的时候一定需要在变量名前添加一个$符号,该要求在其他语言中也存在的。

变量名的规范

注意:变量名后面的等号左右不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则:

  • 名只能使用英文字母,数字和下划线,首个字符不能以数字开头
  • 中间不能有空格,可以使用下划线
  • 不能使用标点符号
  • 不能使用bash里的关键字(可用help命令查看保留关键字)

EG1:使用变量改写入门脚本汇总的第一个shell脚本

注意:

  • 关于单双引号,双引号能够识别变量,单引号不能识别变量,只能原样输出
  • 双引号能够实现转义,单引号不能实现转义(类似于“\*”)

EG2: 定义一个变量,输出当前时间,要求格式为“年-月-日-时-分-秒”

注意:在脚本中执行一些外部命令并且将执行的结果赋值给变量的时候,需要在命令左右加上反引号(esc下面那个键)

1.3只读变量(了解)

语法:readonly  变量名

EG1:定义变量a并且其值为0,随后设置其为只读变量,再去尝试重新赋值

执行结果:

1.4接受用户输入(重点)

语法:read –p 提示信息  变量名

EG1:便携一个脚本 test6.sh,要求执行后提示用户输入文件的名称(路径),然后自动创建文件

1.5删除变量(了解)

语法:unset  变量名

EG1:定义变量b=20,在输出b的值,随后删除b,最后再输出下b

注解:脚本中有两个打印b的语句,但是执行结果过只有一个,红框下内容为空,因为已经删除b变量了,所以使用空来占行(如果删除后不输出,则再执行的时候没有多余的空行)

2.条件判断语句

语法1:一个条件

if  condition

then

       command1

       command1

       …

fi

单行语法(一般令行中执行的时候)

:if [condition] ; then command;fi

语法2:两个条件

If  condition

then

       command1

       command1

       …

else

       command

fi

语法3:多个条件

If  condition1

then

       command1

       …

elif condition2

       command2

else

       command3

fi

注意:条件都必须用中括号包着,里面前后各有一个空格,中间在写表达式

3.运算符

在shell中,运算符和其他编程语言一样,常见的有算数运算符,关系运算符,逻辑运算符,字符串运算符

3.1算术运算符

注意:在原生bash(shell)中是不支持简单的算数运算,但是可以通过其他命令来实现,例如awk,expr(最常用)

补充:expr是一款表达式计算工具,使用它能完成表达式的求值操作

例如:两个数相加(注意使用的是反引号`,而不是单引号’

#!/bin/bash

Val=`expr 2 + 2`

Echo”两个数之和为:$val”

两点注意:表达式和运算符之间要有空格,例如2+2是不对的,必须写成2 + 2。这与我们熟悉的大多数编程语言不一样。

完整的表达式要被``包含,注意这个字符不是常用的单引号,在Esc键下边。

3.2关系运算符

关系运算符只支持数字,不支持字符串,除非字符串的值是数字

-eq:equal 

-ne:not equal

-gt:great than

-lt:less than

-ge:great than or equal

-le:less than or equal

EG1:使用a=20,b=10

EG2:使用语法写一个简易计算器

 

3.3逻辑运算符

或运算:一个为真则为真,全部为假则为假

与运算:一个为假则为假,全部为真则为真

or,and

3.4字符串运算符

案例:将上述语法进行验证

3.5文件测试运算符(重点)

块设备:优盘,硬盘

块设备和字符设备文件命令不常用

-q,-k,-u 检查是否有黏着位

EG1:测试上述红框内命令效果

注意:权限几个判断,如果只有一个部分符合,则认为是有权限的。

案例:使用-e运算符,改写”1.4接受用户输入”的案例,在创建文件的时候需要先判断是否存在,如果存在则提示用户并且不执行创建操作,如果不存在则操作

4.shell脚本附带选项(重点)

问题描述:在linux shell中如何处理tall –n 10 access.log 这样的命令行选项

步骤:

              调用tail指令

              系统内核把后续选项传递给tail

              Tail先去打开指定的文件

              取出指定的10行

问题:自己写的shell是否也可以像内置命令一样传递一些选项呢?

答:可以的,传递方式和上述的描述一样的,关键是怎么接受

EG:

传递:

#./test.sh  a  b  c

接受:

用脚本中可以用”$1”来表示b, 用”$2”来表示从,用”$3”来表示c,以此类推。($0 表示执行的文件)

接受可以用”$”加上选项对应的序号即可。

测试:编写test14.sh,传递a,b,c输出其值

其实$1,$2是变量。

练习:创建自定义指令”user,可以直接执行,要求该执行具有以下语法和功能

a.#user add 用户名     添加用户

b.#user –del  用户名   删除用户以及其家目录

验证:

方法一:

方法二:

问题:在这里是执行./test15/sh –add user1123命令,而与红色文字的需求不符合。

答:我们可以使用别名

注意:如果修改了.bashrc文件的话,则需要重新登录用户

验证:


参考:

教程来源自网络(抱歉地址已忘记,感谢!!)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值