shell基本内容

结构

shell脚本概述

  • shell的作用

  • shell编程规范

  • 重定向与管道

shell脚本变量

  • 自定义变量

  • 特殊变量

shell脚本概述

shell脚本的概念

  • 将要执行的命令按顺序保存到一个文本文件

  • 给该文件可执行权限

  • 可结合各种Shell控制语句以完成更复杂的操作

shell脚本应用场景

  • 重复性操作

  • 交互性任务

  • 批量事务处理

  • 服务运行状态监控

  • 定时任务执行

shell的作用2-1

shell的作用-------命令解释器,“翻译官”

介于系统内核与用户之间,负责解释命令行

shell的作用2-2

用户的登录shell

  • 登录后默认使用的shell程序,一般为/bin/bash

  • 不同shell的内部指令、运行环境等会有所区别

[root@localhost ~]# catletclshells

/bin/sh

/bin/bash/sbin/nologin

shel1脚本编程规范与变量

什么是shell

shell是一个命令解释器,它在操作系统的最外层,负责直接与用户进行对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,输出到屏幕反馈给用户。这种对话方式可是交互也可以是非交互式的,我们所输入的命令计算机是不识别的,这时就需要一种程序来帮助我们进行翻译,变成计算机能识别的二进制程序,同时又把计算机生成的结果返回给我们。

shell的作用

Linux系统中的shell是一个特殊的应用程序,它介于操作系统内核与用户之间,充当了一个"命令解释器"的角色,负责接收用户输入的操作指令(命令)并进行解释,将需要执行的操作传递给内核执行,并输出执行结果。

常见的shell解释器程序有很多种,使用不同的shell时,其内部指令、命令行提示符等方面会存在一些区别。通过/etc/shells文件可以了解当前系统所支持的shell 脚本种类。

[ root@localhost ~]#cat letc/ shells

/bin/sh#是bash命令的软链接(已经被/bin/bash所替换)

/ bin/bash基准于GNU的框架下发展出的shell。

/usr/bin/sh已经被bash所替换。

/usr/bin/bash #centos和redhat系统默认使用bash shell

/bin/tcsh #csh的增强版,与csh完全兼容整合了csh,提供更多的功能。

/bin/csh已经被/bin/bash所替换―(整合c shell,提供更多的功能)

shell脚本执行

shell脚本的执行通常有以下几种方式

方法一:当前路径(决定路径与相对路径)下执行脚本(要有执行权限)

/ home/ first.sh或者./first.sh

方法二:sh . bash脚本文件路劲(这种方式可以不对脚本文件添加执行权限)

bash first.sh或sh first.sh

方法三: source脚本文件路劲(可以没有执行权限)

source first.sh

方法四:其他方法

sh < first.sh或者cat first.sh |sh (bash)

编写第一个shell脚本3-1

编写脚本代码

使用vim文本编辑器

每行一条Linux命令,按执行顺序一次编写

[root@localhost ~]# vim first.sh

cd /boot/

pwd

ls -lh vml*

更完善的脚本构成3-2

●脚本声明

●注释信息

●可执行语句

[root@localhost ~]# vim lfirst.sh

#!/bin/bash

This is my first Shell-Script.

cd /boot

echo "当前的目录位于:"

pwd

echo"其中以vml开头的文件包括:"

ls -lh vml*

重定向与管道操作3-1

交互式硬件设备

●标准输入:从该设备接收用户输入的数据

●标准输出:通过该设备向用户输出数据

●标准错误:通过该设备报告执行出错信息

重定向与管道操作3-2

重定向操作

 

重定向与管道操作3-3

管道操作符号“|”

将左侧的命令输出结果,作为右侧命令的处理对象

cmd1 | cmd2 【...|cmdn】

shell变量的作用、类型

变量的作用

●用来存放系统和用户需要使用的特定参数(值)

●变量名:使用固定的名称,由系统预设或用户定义

●变量值:能够根据用户设置、系统环境的变化而变化

变量的类型

●自定义变量:由用户自己定义、修改和使用

●特殊变量:环境变量,只读变量,位置变量,预定义变量

自定义变量4-1

定义一个新的变量

●变量名以字母或下划线开头,区分大小写,建议全大写

变量名=变量值

查看变量的值

echo $变量名

自定义变量4-2

赋值时使用引号

  • 双引号:允许通过$符号引用其他变量值

  • 单引号:禁止引用其他变量值,$视为普通字符

  • 反撇号:命令替换,提取命令执行后的输出结果

从键盘输入内容为变量赋值

read [-p“提示信息"]变量名

自定义变量4-3

设置变量的作用范围

格式1:export 变量名...< 两种格式可以混合使用>格式2:export 变量名=变量值 ..

[root@localhost ~]# echo ""$Product $Version"

Benet 6.0

[root@localhost ~]# export Product Version (导出为全局变量)

[root@localhost ~]# bash

[root@localhost ~j# echo $Product $Version"(子程序引用全局)

Benet 6.0

[root@localhost ~]# exit

交互式定义变量

read命令:除了上述赋值操作以外,还可以使用Bash 的内置命令read来给变量赋值。用来提示用户输入信息,从而实现简单的交互过程。执行时将从标准输入设备(键盘)读入一行内容,并以空格为分隔符,将读入的各字段依次赋值给指定的变量(多余的内容赋值给最后一个变量)。若指定的变量只有一个,则将整行内容赋值给此变量。

[ root@localhost ~]#read test

123 //等待用户输入,把输入的值赋子test变量[root@localhost ~]#echo $test

一般来说为了使交互式操作的界面更加友好,提高易用性,read命令可以结合"-p"选项来设置提示信息,以便告知用户应该输入什么内容等相关事项[root@localhost ~]# read -p "请输入你的姓名:" name

请输入你的姓名:name

[rootelocalhost ~]#echo $name

name

交互式定义变量( read)

-p提示用户的信息

-n定义字符数

-s不显示用户输入的内容,常用于输入密码read -s -p "input your password:" pass

-t定义超时时间,超过多长时间没输自动退出

从文件读取内容赋值给变量

[root@server myscripts]#echo 192.168.100.100 > ip.txt

[root@server myscripts]#cat ip.txt

192.168.100.100

[root@server myscripts] # read -p "input your ip:" IP < ip.txt

[root@server myscripts]#echo SIP

192.168.100.100

stty -echo //关闭屏幕回显

stty echo //开启屏幕回显

变量的作用范围

默认情况下,新定义的变量只在当前的 Shell环境中有效,因此称为局部变量,当进入子程序或新的子shell 环境时,局部变量将无法再使用

[root@localhost ~]bash #进入了shel1环境

[ root@localhost ~]#

[root@localhost ~]echo $name

[root@localhost~]#echo $test

export命令

为了使用户定义的变量在所有的子 shell环境中能够继续使用,减少重复设置工作,可以通过内部命令

export:将指定的变量导出为全局变量。用户可以同时指定多个变量名称作为参数(无须使用""="符号),变最名之间以空格分隔。

[root@localhost ~]#exit

exit

[root@localhost ~]#export name test

[root@localhost ~]bash

[ root@localhost ~]#echo $name $testexithumajun 123 或

[ root@localhost ~]#echo "$Product $Version”

Benet 6.0

[root@localhost ~]# export Product version#导出为全局变量

[root@localhost ~]#bash

[root@localhost ~]#echo "$Product sVersion"#子程序引用全局变量

Benet 6.0

[ root@localhost ~]#exit

使用export导出全局变量的同时,也可以为变量进行赋值,这样在新定义全局变量时就不需要提前赋值了

env查看用户当前环境变量

export ABC=123

再次env就能看到了

export -n ABC 取消定义的全局变量变成局部变量

自定义变量4-4

整数变量的运算

expr 变量1 运算符 变量2 [运算符 变量3]...

常用运算符

●加法运算:+

●减法运算:-

●乘法运算:*

●除法运算:/

●求模(取余)运算:%

特殊的Shell变量4-2

只读变量

●用于变量值不允许被修改的情况

[root@localhost ~]# name=cloud

[root@localhost -j# readonly namel设置为只读变量

[root@localhost ~]# echo $name

cloud

[root@localhost -]# name=yun

-bash: name: readonly variable//只读变量不可以被重新赋值

[root@localhost一]#

[root@localhost -]# unset name//只读变量不可以被删除

-bash: unset: name: cannot unset: readonly variable

特殊的Shell变量4-4

预定义变量

$#:命令行中位置变量的个数

$*:所有位置变量的内容

$?: 上一条命令执行后逡回的状态,当返回状态值为0时表示执行正常,非O值表示执行异常或出错

$0:当前执行的进程/程序名

总结

Shell的作用与应用场景

Shell脚本的编写规范与执行方法

重定向与管道的作用与使用方法

自定义变量赋值时单引号、双引号、反撇号的使用方法

数值变量的常用运算符: +、-、l*、l、%

环境变量,只读变量、位置变量、预定义变量的用途

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值