| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> PHP知识库 -> 10分钟入门Shell脚本编程 -> 正文阅读 |
|
[PHP知识库]10分钟入门Shell脚本编程 |
Shell是什么Shell是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务, Shell脚本(shell script),是一种为Shell编写的脚本程序 。我们经常说的shell通常都是指shell脚本 环境和工具Shell跟java、php、Python编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器 就可以了。 Mac OS,Linux 自带了shell解释器,Windows比较麻烦,因为Win7专业版和旗舰版默认安装PowerShell,标准版和家庭版中就没有安装的,为了方便建议安装cygwin PHP、Python 也可以作为Shell编程PHP、Python是属于高级编程语言,但是也可以做Shell编程,因为只要有解释器,也可以用作脚本编程 如下是一个Python Shell Script示例(假设文件名叫op_python_base.py):
如下是一个PHP Shell Script示例(假设文件名叫op_php_base.php):
源码:op_php_base 为什么要学习Shell既然PHP、Python都可以用来写脚本编程,那为什么还要学习陌生、晦涩难懂的Shell,主要有一下几个原因
sh与bashsh: Bourne shell,POSIX(Portable Operating System Interface)标准的shell解释器,它的二进制文件路径通常是/bin/sh bash: Bash是Bourne shell的替代品,属GNU Project,二进制文件路径通常是/bin/bash 第一个shell脚本我们先来看一个例子我相信写过代码的童鞋,应该对下面的代码很熟悉并不陌生,(假设文件名叫op_base.sh):
第一行:从系统path中寻找指定脚本的解释程序 第三行:进入创建的文件夹 mkdir, touch,cd,touch,echo都是系统命令,在命令行下可以直接执行 源码:op_base.sh 编写Shell新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好,如果你用php,扩展名为php,如果你用Python,扩展名为python 第一行一般是这样:
#!”是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行 运行 Shell 脚本有两种方法:作为可执行程序
第一行设置 op_base.sh可执行权限 作为参数
变量定义变量时,变量名前不需要加符号和Python一样但是在PHP语言中变量需要加
ps: 变量名和等号之间不能有空格,变量后面不能有; Shell中的引号和PHP类似,字符串可以用单引号,也可以用双引号 单引号字符串的限制: 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的 双引号里可以有变量 使用变量对于已经定义过的变量,使用的适合在前面添加,如:¨G6Gps:变量名和等号之间不能有空格,变量后面不能有;Shell中的引号和PHP类似,字符串可以用单引号,也可以用双引号单引号字符串的限制:<ul><li>单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的</li><li>单引号字串中不能出现单引号(对单引号使用转义符后也不行</li></ul>双引号:<ul><li>双引号里可以有变量</li><li>双引号里可以出现转义字符</li></ul>但是在Python中单引号和双引号是没有区别,但是Python还有三个引号,在三个引号内字符都不会被转义¨K44K对于已经定义过的变量,使用的适合在前面添加
变量名外面的花括号是可选的,加不加都行,建议使用第二种形式 注释以“#”开头的行就是注释,会被解释器忽略。 多行注释sh里没有多行注释,只能每一行加一个#号。就像这样:
字符串字符串可以用单引号,也可以用双引号,也可以不用引号。单双引号的区别跟PHP类似 Shell不像其他语言有php、python 有很多数据类型,在Shell中常用的数据类型字符串数字和字符串(ps: 除了数字和字符串,也没啥其它类型好用了,哈哈) 单引号字符串的限制: 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的 双引号: 双引号里可以有变量 字符串操作拼接字符串
获取字符串长度
截取字符串
源码:op_str.sh Shell 数组定义数组在Shell中,用括号来表示数组,数组元素用"空格"符号分割开。定义数组的一般形式为:
还可以单独定义数组的各个分量:
ps: 可以不使用连续的下标,而且下标的范围没有限制 读取数组读取数组元素值的一般格式是:
例如:
使用@符号可以获取数组中的所有元素,例如:
获取数组的长度获取数组长度 的方法与获取字符串长度的方法相同,例如:
源码:op_arry.sh Shell 流程控制和Java、PHP、Python等语言不一样,sh的流程控制不可为空,如(以下为PHP流程控制写法):
在sh/bash里可不能这么写,如果else分支 没有语句执行,就不要写这个else if
例子:
源码:op_if.sh for 循环Shell的for循环和Python 有点类似 Python的for循环
Shell的for循环,第一种写法
Shell的for循环,第二种写法
源码:op_for.sh while 语句while循环用于不断执行一系列命令,也用于从输入文件中读取数据;命令通常为测试条件。
源码:op_while.sh Shell结合系统命令sh脚本结合系统命令便有了强大的威力,在字符处理领域,有grep、awk、sed三剑客,grep负责找出特定的行,awk能将行拆分成多个字段,sed则可以实现更新插入删除等写操作。 例如定时检测nginx、mysql是否被关闭
解释:检测 nginx、mysql进程是否存在,如果不存在了会自动重新启动。 编辑 /etc/crontab 文件
在文件最后添加一行:
上表示每 5 分钟,执行一下脚本 /xxx/check_nginx.sh,其中xxx代表路径 /dev/null 2>&1 的意思是该条shell命令 将不会输出任何信息到控制台,也不会有任何信息输出到文件中。
添加完配置,需要重启才能生效
|
|
PHP知识库 最新文章 |
Laravel 下实现 Google 2fa 验证 |
UUCTF WP |
DASCTF10月 web |
XAMPP任意命令执行提升权限漏洞(CVE-2020- |
[GYCTF2020]Easyphp |
iwebsec靶场 代码执行关卡通关笔记 |
多个线程同步执行,多个线程依次执行,多个 |
php 没事记录下常用方法 (TP5.1) |
php之jwt |
2021-09-18 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/26 16:10:31- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |