有关Linux中的bash编程讲解
发布时间 - 2017-07-19 00:00:00 点击率:次为何叫做shell?
在介绍 shell 是什么东西之前,不妨让我们重新审视使用者与电脑的关系。我们知道电脑的运作不能离开硬件,但使用者却无法直接对硬件作驱动,硬件的驱动只能透过一个称为“操作系统(operating system)”的软件来控管,事实上,我们每天所谈的linux,严格来说只是一个操作系统,我们称之为“核心(kernel)”。然而,从使用者的角度来说,使用者也没办法直接操作kernel,而是透过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。
这也正是kernel跟shell的形像命名关系。
从技术角度来说,shell是一个使用者与系统的互动界面(interface),主要是让使用者透过命令行(command line)来使用系统以完成工作。因此,shell的最简单的定义就是---命令解释器(Command Interpreter):
将使用者的命令翻译给核心处理,
同时,将核心处理结果翻译给使用者。
每次当我们完成系统登入(log in),我们就取得一个互动模式的shel
l,也称为login shell或primary shell。若从行程(process)角度来说,我们在shell所下达的命令,均是shell所产生的子行程。这现像,我们暂可称之为fork。如果是执行脚本(shell script)的话,脚本中的命令则是由另外一个非互动模式的子shell(sub shell)来执行的。也就是primary shell产生sub shell的行程,sub shell再产生script中所有命令的行程。(关于行程,我们日后有机会再补充。)
这里,我们必须知道:kernel与shell是不同的两套软件,而且都是可以被替换的:
不同的操作系统使用不同的kernel,
而在同一个kernel之上,也可使用不同的shell。
bash编程也叫shell编程
预定义变量 $? 最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确的执行;如果这个变量返回的值非0(具体是那个数,有命令自己来决定),则证明上一个命令执行不正确。 $$当前进程的进程号(PID) $!后台运行的最后一个进程的进程号(PID) 运算符 declare 声名变量的类型 declare [+/-][选项] 变量名 - 给变量设定类型属性 + 取消变量的类型属性 -i 将变量声名为整数型 -x将变量什申明为环境变量 -p 显示指定变量的被声名的类型
举例:
a=1b=2declare -i c = $a+$b c=$(($a+$b))
注意用双小括号,因为Linux中认为一切皆为字符。
如果不加()当成一个命令,shell脚本中Linux命令在 $() 中运行,当然可以直接写命令,如果则一些引用命令时 就要 $()
单分支if 条件语句
if [ 条件判断式 ];then程序 fior if [ 条件判断式 ]then程序 fi
判断登录用户是否为root用户:
#!/bin/bash #grep 获取行通配符 #cut 获取列统配符,以 = 分割 2 获取第二列 login_name=$(env | grep LOGNAME | cut -d "=" -f 2) #echo $login_nameif [ "$login_name" != "root" ]thenecho 'isnot root'fi
判断根分区的占用率
#!/bin/bash
#df -h 任性话显示磁盘的利用率
#awk 获取第五列
#cut 对字符用 % 进行分割 获取第一列值
result=$( df -h | grep sda1 | awk '{print $5}' | cut -d % -f 1)if [ "$result" -lt '90' ]thenecho 'the root dir is not full'fi
双分支if条件语句
if [ 条件判断式 ]then ...else... fi
判断nginx 是否在运行 (最好不用包含nginx作为文件名)
#!/bin/bash
result=$(ps aux | grep nginx | grep -v grep)if [ -n "$result" ]thenecho "$(date) nginx is ok !"elseecho "$(date) nginx is not ok !"
sudo /etc/init.d/nginx start &>/dev/nullecho "$(date) restart nginx !!"
fi
多分支if语句
if []then elif []then...else ...if
# linux
# 互动
# 操作系统
# 称之为
# 都是
# 是一个
# 让我们
# 也没
# 则是
# 而在
# 也可
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
javascript如何操作浏览器历史记录_怎样实现无刷新导航
高性能网站服务器配置指南:安全稳定与高效建站核心方案
Laravel如何处理异常和错误?(Handler示例)
Python文件流缓冲机制_IO性能解析【教程】
高防服务器如何保障网站安全无虞?
Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)
如何用花生壳三步快速搭建专属网站?
如何快速搭建自助建站会员专属系统?
如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】
如何在建站之星绑定自定义域名?
Laravel如何使用Gate和Policy进行授权?(权限控制)
Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】
如何用IIS7快速搭建并优化网站站点?
如何基于云服务器快速搭建网站及云盘系统?
Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】
linux写shell需要注意的问题(必看)
如何将凡科建站内容保存为本地文件?
Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】
教你用AI润色文章,让你的文字表达更专业
Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件
Laravel如何处理CORS跨域请求?(配置示例)
什么是javascript作用域_全局和局部作用域有什么区别?
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
bootstrap日历插件datetimepicker使用方法
Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】
如何用已有域名快速搭建网站?
Laravel PHP版本要求一览_Laravel各版本环境要求对照
千问怎样用提示词获取健康建议_千问健康类提示词注意事项【指南】
Python数据仓库与ETL构建实战_Airflow调度流程详解
Laravel如何实现数据库事务?(DB Facade示例)
Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理
Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录
Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理
香港服务器租用费用高吗?如何避免常见误区?
如何快速搭建支持数据库操作的智能建站平台?
网站制作大概多少钱一个,做一个平台网站大概多少钱?
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
如何在IIS7中新建站点?详细步骤解析
如何快速搭建二级域名独立网站?
JavaScript模板引擎Template.js使用详解
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
如何获取上海专业网站定制建站电话?
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
如何在 Pandas 中基于一列条件计算另一列的分组均值
HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】
PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】
中山网站推广排名,中山信息港登录入口?

