Shell

外层应用程序---->Shell命令解释器---->内核---->硬件
为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序
用户可以用Shell来启动、挂起、停止、甚至编写一些程序

简单的Shell脚本

1)、格式要求
以#!/bin/bash开头(用bash解析)
脚本有可执行权限
文件后缀一般为(.sh)
echo ‘’‘’输出

2)、两种执行方式
当前路径:./文件名
绝对路径:/
若不赋予可执行权限,可使用sh ./文件名执行(不推荐)

3)、注释方式
单行:#
多行: :<< 内容
!
4)、后台运行
./文件名 &

Shell变量

1)、系统变量:$HOME $PWD $SHELL $USER等
PS:显示当前SHELL中所有变量:set

2)、用户自定义变量:
①定义: 变量=值
引用或输出的时候需要 $
②撤销: unset 变量
③声明静态变量:readonly 变量 PS:不能unset

3)、变量命名规则
①由字母、数字和下划线组成、不能以数字开头
②等号两侧不能有空格
③变量名称一般习惯大写

4)、将命令返回值赋给变量
A=`ls -alh` 反引号
A=$(ls -alh)

5)、设置环境变量(在etc/profile中添加,在其它Shell中可使用)
①export 变量名=变量值 将该变量输出为环境变量
②source 配置文件 使得修改后的配置信息立即生效
③echo $变量名 查询环境变量的值

6)、位置参数变量
执行Shell脚本时,有参数需要传入到文件类部进行使用,就可以使用到位置参数变量
①基本语法:
$n (n为数字,表示1~9个参数,十以上的参数需要用大括号包起来${n})
PS:$0代表所调用Shell脚本的语句,如:./abcd.sh
$* (代表命令行中所有的参数,把所有的参数看成一个整体)
$@ (代表命令行中所有的参数,把每个参数区分对待)
$# (代表命令行中所有参数的个数,不统计$0)

7)预定义变量
Shell预先定义好的变量,可直接在Shell脚本中使用
①基本语法:
$$ (当前进程的进程号(PID))
$? (最后一次执行命令的返回状态,0表示正确运行,非0(可由自己定义)表执行不正确)

运算符

1)、基本语法
①((运算式))或((运算式))或((运算式))或[运算式]
②expr m + n (运算符间要有空格,给变量赋值时,需使用反引号括起来)
运算符:* 乘 , / 除 ,% 取余

条件判断

1)、基本语法
[ condition ] 非空返回true,可使用$?验证(condition前后有空格)

2)、常用判断条件
①整数的比较
= (比较字符串) -lt(小于) -le(小于等于)
-eq(等于) -gt(大于) -ge(大于等于) -ne (不等于)
②按照文件权限进行判断
-r 有读权限 -w 有写权限 -x 有执行权限
③按照文件类型进行判断
-f 文件存在并且是一个常规文件 -e文件存在
-d 文件存在并且是一个目录

流程控制

1)、if判断
基本语法:
if [ 条件判断 ]; then 执行语句 fi
if [ 条件判断 ] then 执行语句 elif[ 条件判断 ] then 执行语句 fi (一般使用)

2)、case
case $变量名 in
“值1”) 执行语句 ;;
“值2”) 执行语句 ;;
*) 执行语句 ;; #表其它情况
esac

3)、for循环 (使用到$*,$@)
for 变量 in 值1 值2 值3 …
(使用“$*”,会执行一次,使用“$@”,会循环多次,不使用“”时都表示多个参数)
do
执行语句
done

for((初始值;循环控制条件;变量变化(可使用i++)))
do
执行语句
done

4)、while循环
while [ 条件判断 ] (有空格)
do
执行语句
done

读取控制台输入

read [option] [parameter] (和echo 相当于输入输出,若不指定变量,默认赋值给变量REPLY)
选项:
-p: 指定读取值时的提示符。
-t: 指定读取值时等待的时间(秒),超时就不会等待。
-a arrayname : 把单词清单读入arrayname的数组里。
-r :line允许输入包含反斜杠。
-t num:指定读取等待时间为num秒。
-n num:从输入中读取num个字符并存入变量,不需要按回车读取。
-d “:” :定界符“:”结束输入行。

函数

1)、系统函数(常用)
①basename [pathname] [suffix]
basename [string] [suffix]
选项:suffix ,若suffix被指定,会将pathname或string中的suffix去掉
作用:返回完整路径最后的部分,去掉最后一个/前的所有字符(包括/),用于获取文件名
②dirname 类似于basename,除去文件部分而返回路径部分

2)、自定义函数
基本语法:’[]'表可省略
[ function ] funname[()] (不需要形参)
{
执行代码
}
调用直接使用 funname [ 参数]

PS:函数可以有返回值,在调用函数后,通过$?提取,如下图,直接用变量接取到的“返回值”是函数内部echo的内容

Shell脚本基本规则相关推荐

  1. shell编程:对话 UNIX: 更多 shell 脚本技术

    尽管在近两年使用过 UNIX 的一些人可能尝试过 shell 脚本编程,但是他们很可能只是研究操作系统的细节,并不精通 shell 脚本编程.本文针对那些希望进一步了解 shell 脚本,并开始编写更 ...

  2. shell脚本7天实战(上)

    第一章 SHELL的基本介绍 编程语言分类介绍 计算机只能识别机器语言(如:01010101001这种), 程序员不能直接去写01这种代码,所以要程序员所编写的程序语言翻译成机器语言.将其他语言翻译成 ...

  3. Shell脚本执行效率

    一.引言 低效的shell脚本设计会进一步影响原本解释器模式下并不见长的程序运行效率,使其在面对大数据量文本分析时的资源与时间消耗变成难以接受的.本文分析了shell语言及其应用需求的特点,从分层设计 ...

  4. jar包部署shell脚本编写,在服务器上部署jar包,在Linux服务器上部署服务,设置编码格式,设置内存管理

    准备步骤: 1.安装java环境,知道java安装目录 2.将jar包拖放或发送至服务器中(目录自定义) 一.编写shell脚本,将以下代码放在shell脚本中,将shell脚本放在jar包同级目录下 ...

  5. 快速给shell脚本加上使用提示

    我们只需通过在shell脚本前面加上如下的代码即可: #!/bin/bash ### ### my-script - does one thing well ### ### Usage: ### my ...

  6. Ubuntu系统执行shell 脚本的方法

    使用前了解 Shell: Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁 Shell: Shell 脚本(shell script),是一种为 shell 编写的脚本程序. 下面 ...

  7. Windows 系统执行Shell 脚本的方法

    使用前了解 Shell: Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁 Shell: Shell 脚本(shell script),是一种为 shell 编写的脚本程序. 下面 ...

  8. shell监控java接口服务_Linux系统下Java通过shell脚本监控重启服务

    简介 最近运维人员提出需求,增加一个运维页面, 查询当前的业务进程信息包括:进程名称.启动命令.启动时间.运行时间等,可以通过页面点击重启按钮,可以重启后端的一系列系统进程. 思路 java程序获取l ...

  9. linux 脚本 alias,在shell脚本中使用alias别名

    本文最后更新于2015年7月12日,已超过 1 年没有更新,如果文章内容失效,还请反馈给我,谢谢! 缘由: 经常用Linux进行操作的同学一般都会有各种各样的技巧来提升工作效率,而添加/改写shell ...

最新文章

  1. 高斯混合模型GMM、核心参数、高斯混合模型GMM的数学形式
  2. java 枚举类 enum
  3. QWidget中加载QML页面并设置透明背景
  4. android StringBuffer的使用
  5. Kubernetes Federation V2搭建(持续更新)
  6. codeforces 703B
  7. 灵格斯怎么屏幕取词_电脑包尺寸怎么选?手提的好还是双肩的好?比较推荐哪款电脑包?...
  8. python中读写excel_python读写Excel
  9. SpringBoot 配置文件bootstrap和application的区别
  10. Linux/Centos下安装部署phantomjs 及使用
  11. 【Day01】你有封装过 axios 吗?主要是封装哪些方面?如何中断 axios 请求?
  12. 【Python爬虫】入门知识
  13. 十六进制高低位转换,返回十进制数
  14. 2021年全球及中国企业级路由器市场竞争格局分析,呈现出寡头竞争的市场格局「图」
  15. VS2015 无法启动IIS Express Web服务器
  16. Glide遇到重定向url产生的bug分析以及解决
  17. 蒸汽凝结水颜色发红十种常见除铁处理技术优劣对比
  18. 【Unity】基础游戏单位GameObject中常用的属性和API
  19. 嵌入式开发之linux根文件系统移植
  20. 一文看懂海明校验码及其计算方法(详细总结)

热门文章

  1. linux中如何让vim永久显示行号(永久显示+临时显示)
  2. oracle一个lun多大,Oracle RAC中验证LUN_ID对应情况
  3. JAVA Websocket 使用@PathParam无法获取参数
  4. C#LeetCode刷题之#728-自除数(Self Dividing Numbers)
  5. C#算法设计排序篇之01-冒泡排序(附带动画演示程序)
  6. 如何在xp中添加打印机
  7. 不要束缚:为什么我们会错过GitHub条纹
  8. node.js ejs_如何在Node.js应用程序中使用EJS模板
  9. 百度HTTPS认证显示“您的站点有链接未通过https检验”的解决办法
  10. Spring MVC中的基本流程