有关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 】
相关推荐:
使用spring连接及操作mongodb3.0实例
原生JS获取元素集合的子元素宽度实例
JavaScript实现Fly Bird小游戏
如何批量查询域名的建站时间记录?
如何快速搭建自助建站会员专属系统?
laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法
如何在VPS电脑上快速搭建网站?
Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区
百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
Laravel如何处理和验证JSON类型的数据库字段
如何快速搭建高效香港服务器网站?
如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框
Laravel集合Collection怎么用_Laravel集合常用函数详解
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
济南网站建设制作公司,室内设计网站一般都有哪些功能?
如何在云主机上快速搭建网站?
Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】
Laravel如何构建RESTful API_Laravel标准化API接口开发指南
如何快速搭建高效可靠的建站解决方案?
网站图片在线制作软件,怎么在图片上做链接?
教学论文网站制作软件有哪些,写论文用什么软件
?
laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法
javascript中对象的定义、使用以及对象和原型链操作小结
如何用PHP快速搭建CMS系统?
Laravel如何实现文件上传和存储?(本地与S3配置)
深入理解Android中的xmlns:tools属性
网易LOFTER官网链接 老福特网页版登录地址
如何在万网ECS上快速搭建专属网站?
Android滚轮选择时间控件使用详解
如何在Windows服务器上快速搭建网站?
使用C语言编写圣诞表白程序
Linux系统命令中tree命令详解
如何在Ubuntu系统下快速搭建WordPress个人网站?
Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册
Laravel如何实现全文搜索功能?(Scout和Algolia示例)
Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试
高防服务器:AI智能防御DDoS攻击与数据安全保障
如何注册花生壳免费域名并搭建个人网站?
绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信
手机网站制作与建设方案,手机网站如何建设?
Laravel如何从数据库删除数据_Laravel destroy和delete方法区别
lovemo网页版地址 lovemo官网手机登录
Laravel如何与Inertia.js和Vue/React构建现代单页应用
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
如何在新浪SAE免费搭建个人博客?
Laravel如何实现API版本控制_Laravel版本化API设计方案
如何在景安服务器上快速搭建个人网站?
Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】
Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲

