week23-shell

1. 什么是shell

命令解释器, 用来翻译用户输入的指令给内核,内核驱动硬件,硬件返回给内核,内核面板通知

1. 1 shell 的执行方式

  • 交互式:输入一条,返回一条
  • 非交互式:需要执行的命令写入一个文件中,然后去执行这个文件,所有任务完成

2. 什么是shell 脚本

  • 将系统命令堆积在一起, 顺序执行 (简称: 系统命令堆积)
  • 特定的格式 + 特定的语法 + 系统的命令 = 文件 ---> shell脚本

3. shell脚本能做什么

shell可以做什么

4. 学习shell 脚本需要哪些预备知识,如何才能学完shell脚本

  • 熟练使用vim编辑器
  • 熟练使用linux 命令
  • 熟练使用linux 三剑客

如果对命令使用不够熟练,对基本服务不能手动大剑,那么一定学不会shell

如何学好shell脚本

基础命令+基础服务+经常练习+ 思路

5. shell脚本编写规范,shell脚本执行方式

  • 脚本存放固定目录/scripts
  • 开头加#!/bin/bash 作用:告诉脚本使用的是哪种命令解释器。如不指shell,默认以bash执行。
  • 附带作者及版权信息
  • 脚本扩展名为*.sh
  • 脚本中尽量不使用中文
  • 成对的符号一次书写完成
  • 循环格式一次性输入完成

6. 解释器加与不加的区别 (# !/bin/bash)

没有加解释器的shell脚本
bash shell_01.sh 使用bash运行脚本
./bash shell_01.sh 直接执行脚本
使用bash 命令可以正常执行
以./ 需要加权限才可以执行脚本

. / 方式执行,系统会读取第一行声明的解释器,如果不加,linux系统默认使用bash,如果脚本不是bash可执行的命令,就会报错

Centos 6 !/bin/bash
Centos 7 !/usr/bin/bash

补充:如何让Vim编辑器自动显示行号

vim /etc/vimrc
在最后一行加入 set number
wq 保存退出

7. Shell 脚本变量

7.1 什么是变量

变量是shell传递数据的方法,简单理解,就是用一个固定的字符串,表示一个不固定的值

7.2变量命名规范

变量定义时建议使用:大写字母、小写字母、下划线几个组成 {变量名最好具备一定的含义}
不要出现数字开头:
可以使用如下的方式:
HostName=
cpu_load_ava_1=1
cpu_load_ava_5=2
cpu_load_ava_15=3

注意: 等号是复制,需要注意,等号两边不能有空格,其次,定义的变量不要与系统的命令出现冲突

7.3 shell定义变量的方式

  • 用户自定义变量:人为定义变量名称

自己设定的变量

  • 系统环境变量:保存的是和系统操作

系统设置好的,可以直接调用

  • 位置参数变量:位置参数变量,变量名不能自定义,变量作用也是固定

  • 预定义的变量:是Bash中已经定义好的变量,变量不能自定义,变量作用也是固定的

8. Shell 变量实践

8.1 用户自定义变只在当量前shell 有效

定义变量 变量名=变量值 不能出现 " - " 命名

当前窗口定义一个变量
新建窗口之后变量不在有作用

想要多个窗口都读到变量,设置为全局变量就可以想要在系统生效,必须写入配置文件/etc/profile

写入全局变量
在其他shell窗口也可以使用定义的全局变量

**8.2 **

引用变量,$变量名

var_1=a1b2
echo $var_1
a1b2

8.3 查看变量

查看变量,set显示所有变量,包括自定义变量和环境变量

查询刚刚设置的变量

8.4 取消变量,作用范围:仅在当前shell中有效

取消变量
全局变量同样也可以临时取消
在其他shell中依旧有效

8.5 shell中 单引号与双引号的区别

什么时候使用双引号

  • 字符串出现空格的情况需要双引号将其作为一个整体
字符串
  • 如果内容中有命令、变量等,会先把变量、命令解析出结果,然后输出最终内容。

什么时候使用单引号

  • 所见即所得,单引号中是什么就输出什么
  • 单引号会解析引号中的变量

9. 系统环境变量

系统环境变量详细解释

系统环境变量是用来定义系统运行环境的一些参数,比如每个用户不同的家目录(HOME)、邮件存放位置(MAIL)等

查看系统环境变量
export

9.1 常见系统变量

  • 用户的家目录: $HOME
  • 当前主机名是: $HOSTNAME
  • 当前所在目录: $PWD
  • 当前连接信息: $SSH_CONNECTION

9.2 自定义系统环境变量

变量$var_3 没有定义为系统环境变量时bash解释器中无法识别

定义系统环境变量
查询变量
export var_3=a1 定义系统环境变量 ,注意不要加上$符号

9.3 预定义变量
Bash中已经定好的变量,名称不能自定义,作用也是固定的

示例

$0:当前脚本的文件名
$n:第n个参数    第0个参数为文件名称
$#:参数个数   
$*:所有的参数   在一块内存中,空格间隔
$@:所有的参数  申请n个空间,分别存放
$?:上次命令执行的返回值

用处
$n:在判断用户输入的位置参数是什么
$#:判断参数个数
$?:判断命令执行结果

判断参数个数

$* 和 $@的区别

不加引号时,二者都是返回传入的参数
加了引号后,
    $* 把参数作为一个字符串整体(单字符串)返回
    $@ 把每个参数作为一个一个的字符串进行返回

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,362评论 0 5
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,718评论 0 10
  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 3,813评论 0 5
  • 计算机系统漫游 代码从文本到可执行文件的过程(c语言示例):预处理阶段,处理 #inlcude , #defin...
    willdimagine阅读 3,557评论 0 5
  • 观其大纲 第1部分Linux的基础知识第1章Linux概述第2章Linux系统的安装KickStart开始自动安装...
    周少言阅读 1,457评论 1 10