SHELL体系知识I
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相关推荐
- View 绘制体系知识梳理(7) getMeasuredWidth 和 getWidth 的区别
前言 前几天被问到了getMeasuredWidth和getWidth之间的区别,因此回来看了一下源码,又顺便复习了一遍measure/layout/draw的过程,有兴趣的同学可以看前面的几篇文章 ...
- Java体系知识之ElementUI
Java体系知识之ElementUI 学习如何借助于ElementUI,帮助快速实现效果 1 技术简介 (1)网站快速成型工具 (2)Element,一套为开发者.设计师和产品经理准备的基于 Vue ...
- 【图文教程】Shell基础知识
Shell基础知识 1. shell介绍 2. history命令 history主要参数示例: 3. 命令补全和别名 4. 通配符 5. 输入输出重定向 6. 管道符和作业控制 管道符: 作业控制: ...
- 3000字扫盲shell基础知识(新手必备)
目录 shell基础语法之变量 shell 变量命名 shell 变量调用 shell 变量分类 shell 运算符 运算符种类 关系运算符 布尔运算符 字符串运算符 逻辑运算符 文件测试运算符 sh ...
- linux运维基础进阶和shell入门,Linux运维工程师从基础到进阶:Shell变量知识梳理...
原标题:Linux运维工程师从基础到进阶:Shell变量知识梳理 Shell是一个用C语言编写的程序,它是用户使用Linux的桥梁.Shell既是一种命令语言,又是一种程序设计语言,涵盖的知识点多且杂 ...
- Linux之(5)账户和shell基础知识
Linux之(5)账户和shell基础知识 Author:onceday date:2022年8月23日 漫漫长路,而今才刚刚开始- 本内容主要收集整理于: <Linux命令行与shell脚本编 ...
- shell学习之shell基础知识了解
一.了解bash shell /etc/bash是Linux系统预设的shell.bash是GNU计划中重要的工具软件之一,目前也是Linux distributions的标准 shell. Shel ...
- shell基础知识总结
1. shell 对于一台计算机而言,其硬件受系统内核的控制,使用者想要控制计算机,就必须有与系统内核进行通讯的手段.而shell就是使用者与计算机进行通讯的手段之一.从命名上看,shell其实是相对 ...
- shell 输出数据到文本_Linux运维工程师从基础到进阶:Shell变量知识梳理
Shell是一个用C语言编写的程序,它是用户使用Linux的桥梁.Shell既是一种命令语言,又是一种程序设计语言,涵盖的知识点多且杂,却是云计算开发人员必须要掌握的技术之一.接下来的广州云计算培训小 ...
最新文章
- LeetCode-剑指 Offer 10- I. 斐波那契数列
- 21. 合并两个有序链表(C语言)
- Spring中ApplicationContextAware的用法
- Hadoop集群(第3期)_VSFTP安装配置
- Android开发之将AndroidX项目改为非androidX(android.v7.support)的方法
- POE交换机隐藏指标是什么?
- 警惕AI军事间谍!找出导弹基地人类用2.5天,AI只要42分钟
- 全新版本的SoundSource for Mac 优质的音频控制软件
- PHP学习笔记08——GD绘图基础
- Redis集群:./redis-trib.rb:24:in `require': no such file to load -- rubygems
- “暗云”BootKit木马详细技术分析
- Leu-Trp-Leu-COOH,42293-99-2
- 企业安全文化理念体系及常用口号
- Android studio通过荣耀20调试Android程序
- 现流行的第三方库及名称
- Economics Overview
- 绕过黑名单检查实现文件上传1 ——合天网安实验室学习笔记
- bzoj1349 [Baltic2006]Squint
- Java发送邮件详解
- Java 基础巩固:再谈抽象类和接口