SHELL作为最常用软件技能之一,能自动化、批量的完成很多相关简单的功能。学习SHELL的重要性不言而喻,那么如何学习SHELL自然成为一个重要的问题?
        个人认为学习SHELL需要分四部分进行:
        1.学习SHELL入门教程(如:http://www.hechaku.com/shell/)
        2.总结SHELL的语法知识
        3.总结SHELL的常用指令
        4.归档SHELL的常用用法
        第一步由于网上的资料又多又好,在此我就不在赘述。我从第二步开始向大家展示我总结的SHELL理论图:
1.概念:C语言编写,需要解释器执行的指令集合。
        1.1.C语言编写:继承了C语言的很多语法结构。
        1.2.解释器执行:脚本语言。
        1.3.指令:编译好能执行特定功能的执行程序。
2.变量
        2.1.概念:通过变量名访问、内容可变的抽象概念。
        2.2.分类
                2.2.1.数值、字符串
                        2.2.1.1.定义:variable_name=variable_value
                        2.2.1.2.使用:${variable_name}
                2.2.2.数组
                        2.2.2.1.定义:array_name=( value…valuen)/array_name[index]=value
                        2.2.2.2.使用:${array_name[index]}
                2.2.3.保留变量
                        2.2.3.1.参数类型
                                2.2.3.1.1.${#}:传入参数的个数。
                                2.2.3.1.2.${n}:引用传入的第n个参数。
                                2.2.3.1.3.${}:将n个参数做为一个参数传入。
                                2.2.3.1.4.${@}:将n个参数做为n个参数传入。
                        2.2.3.2.环境类型
                                2.2.3.2.1.${0}:当前使用的SHELL。
                                2.2.3.2.2.${$}:当前SHELL的进程号。
                                2.2.3.2.3.${?}:上一条指令执行状态。
        2.3.只读设置:readonly variable_name
3.运算符
        3.1.算术运算符
        3.1.1.符号:+、-、
、/、%
        3.1.2.示例
                3.1.2.1.整型运算:variable_name=expr ${num} / 10
                3.1.2.2.浮点型运算:variable_name=$( echo “scale=10; ${num} / 76”|bc)
        3.2.赋值运算符:=
        3.3.逻辑判断运算符
                3.3.1.符号
                        3.3.1.1.判断符号:==、!=、>、<
                        3.3.1.2.特点
                                3.3.1.2.1.>、<符号使用时需要增加转义字符。
                                3.3.1.2.2.变量当成字符串比较,不适合数值比较。
                                3.3.1.2.3.没有>=、<=符号使用。
                3.3.2.保留字
                        3.3.2.1.保留字:-eq、-ne、-ge、gt、le、lt
                        3.3.2.2.特点
                                3.3.2.2.1.适用于整型数据比较,浮点型数据比较请使用bc指令。
        3.4.布尔运算符
                3.4.1.与
                        3.4.1.1.符号:-a、&&
                                3.4.1.2.示例
                                        3.4.1.2.1.-a:[ ${DRINK} == ‘appe’ -a ${DRINK} == ‘all’ ]
                                3.4.1.2.2.&&:[ ${DRINK} == “tee” ] && [ ${DRINK} == “cofee” ]
                3.4.2.或
                        3.4.2.1.符号:-o、||
                        3.4.2.2.示例
                                3.4.2.2.1.-o:[ ${DRINK} == ‘appe’ -o ${DRINK} == “all” ]
                                3.4.2.2.2.||:[ ${DRINK} == tee ] || [ ${DRINK} == cofee ]
                3.4.3.非
                        3.4.3.1.符号:!
                        3.4.3.2.示例:[ ! ${str1} < ${str2} ]
        3.5.字符串判断:-z、-n
        3.6.文件测试运算符:-d、-f、-r、-w、-x

4.分支结构
        4.1.基础结构
                4.1.1.if
                        4.1.1.1.示例
if [ ${DRINK} == “coffee” ]
then
        FLAG=1
elif [ ${DRINK} == “tea”
then
        FLAG=2
else
        FLAG=3
fi
                4.1.2.case
                        4.1.2.1.示例
case $DRINK} in
        tea|coffee|water)
                echo “Go to canteen”
                ;;
        all|appe)
                echo “Available at home”
                ;;
        *)
                echo “Error:Invalid selection”
                ;;
esac
                4.1.3.while
                        4.1.3.1.示例
while [ ${num} -ge 122 ]
do
        echo " The value of variable is ${num}"
        break
done
                4.1.4.for
                        4.1.4.1.示例
for LINE_STR in ${array[@]}
do
        echo ${LINE_STR}
done
                4.1.5.until
                        4.1.5.1.示例
until [ ${num} -gt 10 ]
do
        echo “${num}”
done
                4.1.6.select
                        4.1.6.1.示例
select DRINK in $( echo “tea cofee water juice”)
do
        echo “${DRINK} is select value”
        echo “The number of cycle is ${num}”
        num=expr ${num} + 1
done
        4.2.控制字符:continue、break

5.函数
        5.1.概念:反复执行的代码块。
        5.2.定义
                function_name()
                { list of commands}
        5.3.使用
                function_name para_list
        5.4.外调相互调用:. fullpath_name/source fullpath_name
        5.5.内部特殊用法
                5.5.1.变量替换
                        5.5.1.1.${var:-word}:变量为空或未设置,则返回word且不改变var值。
                        5.5.1.2.${var:+word}:变量设置,则返回word且不改变var值。
                        5.5.1.3.${var:?msg}:变量为空或未设置,则将消息送到标准输出,且终止程序。
                        5.5.1.4.${var:=word}:变量为空或未设置,则返回word且改变var值。
                5.5.2.命命替换
                        5.5.2.1.command
                        5.5.2.2.$(command)
                5.5.3.重定向
                        5.5.3.1.>:以新文件形式重定向标准输出。
                        5.5.3.2.>>:以追加形式重定向标准输出。
                        5.5.3.3.<:重定向标准输入。
                        5.5.3.4.<<:用于输入重定向一个交互式的shell脚本或程序。

6.shell执行
        6.1.子shell执行
                6.1.1…/shell_name.sh:需要执行权限。
                6.1.2.sh shell_name.sh:不需求执行权限。
        6.2.当前shell执行
                6.2.1.source shell_name.sh:父子shell能共享相关资源。
                6.2.2… shell_name.sh:同上
这个总结图只是一个参考,画得好不好,对不对都不重要。但有三点是重要的:
       1.学习之后要自己画一张自己的图。
       2.理解性的记忆这张图,重温这张图。
       3.使用SHELL知识时回顾这张图,系统的思考、应用这张图。

SHELL体系知识I相关推荐

  1. View 绘制体系知识梳理(7) getMeasuredWidth 和 getWidth 的区别

    前言 前几天被问到了getMeasuredWidth和getWidth之间的区别,因此回来看了一下源码,又顺便复习了一遍measure/layout/draw的过程,有兴趣的同学可以看前面的几篇文章 ...

  2. Java体系知识之ElementUI

    Java体系知识之ElementUI 学习如何借助于ElementUI,帮助快速实现效果 1 技术简介 (1)网站快速成型工具 (2)Element,一套为开发者.设计师和产品经理准备的基于 Vue ...

  3. 【图文教程】Shell基础知识

    Shell基础知识 1. shell介绍 2. history命令 history主要参数示例: 3. 命令补全和别名 4. 通配符 5. 输入输出重定向 6. 管道符和作业控制 管道符: 作业控制: ...

  4. 3000字扫盲shell基础知识(新手必备)

    目录 shell基础语法之变量 shell 变量命名 shell 变量调用 shell 变量分类 shell 运算符 运算符种类 关系运算符 布尔运算符 字符串运算符 逻辑运算符 文件测试运算符 sh ...

  5. linux运维基础进阶和shell入门,Linux运维工程师从基础到进阶:Shell变量知识梳理...

    原标题:Linux运维工程师从基础到进阶:Shell变量知识梳理 Shell是一个用C语言编写的程序,它是用户使用Linux的桥梁.Shell既是一种命令语言,又是一种程序设计语言,涵盖的知识点多且杂 ...

  6. Linux之(5)账户和shell基础知识

    Linux之(5)账户和shell基础知识 Author:onceday date:2022年8月23日 漫漫长路,而今才刚刚开始- 本内容主要收集整理于: <Linux命令行与shell脚本编 ...

  7. shell学习之shell基础知识了解

    一.了解bash shell /etc/bash是Linux系统预设的shell.bash是GNU计划中重要的工具软件之一,目前也是Linux distributions的标准 shell. Shel ...

  8. shell基础知识总结

    1. shell 对于一台计算机而言,其硬件受系统内核的控制,使用者想要控制计算机,就必须有与系统内核进行通讯的手段.而shell就是使用者与计算机进行通讯的手段之一.从命名上看,shell其实是相对 ...

  9. shell 输出数据到文本_Linux运维工程师从基础到进阶:Shell变量知识梳理

    Shell是一个用C语言编写的程序,它是用户使用Linux的桥梁.Shell既是一种命令语言,又是一种程序设计语言,涵盖的知识点多且杂,却是云计算开发人员必须要掌握的技术之一.接下来的广州云计算培训小 ...

最新文章

  1. LeetCode-剑指 Offer 10- I. 斐波那契数列
  2. 21. 合并两个有序链表(C语言)
  3. Spring中ApplicationContextAware的用法
  4. Hadoop集群(第3期)_VSFTP安装配置
  5. Android开发之将AndroidX项目改为非androidX(android.v7.support)的方法
  6. POE交换机隐藏指标是什么?
  7. 警惕AI军事间谍!找出导弹基地人类用2.5天,AI只要42分钟
  8. 全新版本的SoundSource for Mac 优质的音频控制软件
  9. PHP学习笔记08——GD绘图基础
  10. Redis集群:./redis-trib.rb:24:in `require': no such file to load -- rubygems
  11. “暗云”BootKit木马详细技术分析
  12. Leu-Trp-Leu-COOH,42293-99-2
  13. 企业安全文化理念体系及常用口号
  14. Android studio通过荣耀20调试Android程序
  15. 现流行的第三方库及名称
  16. Economics Overview
  17. 绕过黑名单检查实现文件上传1 ——合天网安实验室学习笔记
  18. bzoj1349 [Baltic2006]Squint
  19. Java发送邮件详解
  20. Java 基础巩固:再谈抽象类和接口

热门文章

  1. 什么是兴趣点 (POI)
  2. 香港服务器租用数据真的进入了刷脸时代吗
  3. C++判断map中key值是否存在
  4. 西门子828D 802 810 840Dsl PLC密码获取
  5. QSV文件格式简单分析
  6. 搜索引擎SEO快速排名算法大揭秘
  7. 巴菲特08年致股东信
  8. 怎么用iphone或安卓手机远程控制电脑
  9. 玩转Windows个性化登录界面 (更换Windows7登录界面图片/XP仿Win7登录界面)
  10. 神奇的代码系列(持续更新)