Linux进阶之Shell编程
1.什么是Shell
Shell是一个命名行解释器,它为用户提供一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。
2.Shell脚本的执行方式
1) 脚本以 #!/bin/bash 开头
2) 脚本需要有可执行权限
3) hello,word!
#!/bin/bash
echo "hello,world!"
4.执行方式
有执行权限(x权限)
1) 相对路径 ./shell.sh
2) 绝对路径 /root/shell.sh
sh + 脚本(不需要执行权限,不推荐)
1) 相对路径 sh ./shell.sh
2) 绝对路径 sh /root/shell.sh
5.Shell的变量
5.1变量介绍
- Linux中变量分为系统变量与用户自定义变量
- 系统变量如:
$HOME,$PWD等 - 查看Shell中所有变量可以用 set
5.2.变量的定义
- 定义变量: 变量=值
- 撤销变量:unset 变量
- 声明静态变量:readonly 变量(不能unset)
5.3.变量定义的规则
- 变量的名称可以由字母、数字、下划线组成,不能以数字开头
- 等号两边不能有空格
- 变量名一般习惯大写
6.将命令的返回值复制给变量
- A=`ls -la` 反引号,运行里面的命令,并把结果返回给A
- A=$(ls -la) 等价于反引号
7.设置环境变量
- export 变量名=变量值 (将Shell变量输出为环境变量)
- source 配置文件 (让修改后的配置信息生效,配置文件在/etc/profile)
8.位置变量与预定义变量
8.1.介绍
当我们执行一个Shell脚本时,如果希望获取到命令行的参数信息,就可以使用位置变量参数,比如 ./shell.sh 100 200 ,这个就是执行Shell的命令行,可以在 shell.sh脚本中获取到参数信息。
8.2.基本语法
$n[n为数字,$0就表示命名本身 ./shell.sh,$1-9代表第一个到第九个参数,10以上的参数需要用大括号包裹,${10}]- $* [这个变量代表命令行所有的参数,把参数看做一个整体,类似于一个字符串接收]
- $@ [这个变量也代表命令行中所有的参数,会区别对待,类似于数组接收,可以遍历]
- $# [这个变量代表命令行中的参数个数]
8.3.预定义变量
$$ [当前进程的进程号 PID]- $! [后台运行的最后一个进程的进程号]
- $? [最后一次执行的命令的返回状态,0表示正确执行了,反之错误,具体数字有命令决定]
9.运算符
- $$((运算式)) 或者 $[运算式]
- expr m + n [expr运算符之间要有空格]
- expr *,/,%,- 乘,除,取余,减
10.条件判断
10.1.基本语法
[ condition ] 注意:condition前后要有空格,非空返回true,可用$?验证(0为true)
10.2.常用条件判断
- 两个整数的比较
= 字符串比较
-lt 小于
-le 小于等于
-eq 等于
-gt 大于
-ge 大于等于
-ne 不等于 - 按照文件权限进行判断
-r 有读权限[ -r 文件 ]
-w 有写的权限
-x 有执行的权限 - 按照文件的类型进行判断
-f 文件存在并且是一个常规文件
-e 文件存在
-d 文件存在并且是一个目录
11.流程控制
11.1.if判断
if[ 条件判断式 ];then
程序
fi if[ 条件判断式 ]
then
程序
elif[ 条件判断式 ]
then
程序
fi
注意:[ 条件判断式 ],中括号与条件判断式之间必须要有空格,推荐第二种方式
11.2.case语句
case $变量名 in
"值1")
如果变量值等于值1,执行程序1
;;
"值2")
如果变量值等于值2,执行程序2
;;
*)
如果变量值都不是以上值,执行此程序
;;
esac
11.3.for循环
for 变量 in 值1 值2 值3
do
程序
done for ((初始值;循环控制条件;变量变化))
do
程序
done
11.4.while循环
while[ 条件判断式 ]
do
程序
done
12.read读取控制台输入
read (选项)(参数)
1. 选项
-p 指定读取值时的提示符
-t 指定读取值时的等待时间(秒),如果没有在指定时间内输入,则不再等待
2. 参数
变量 指定读取值得变量名
13.函数
13.1.基本介绍
Shell编程和其他编程语言一样,有系统函数,也可以自定义函数。
13.2.系统函数
- basename [pathname/string] [suffix] 返回完整路径最后/的部分,常用于获取文件名。suffix为后缀,如果suffix被指定,basename会将pathname或string中的suffix去掉
- dirname pathname/string 返回文件绝对路径最后/的前面的部分,常用于返回路径部分
13.3.自定义函数
1. 语法,调用直接写函数名: funname [值]
[function] funname [()]
{
action;
[return int;]
}
#!/bin/bash
function getSum(){
SUM=$[$n1+$n2]
echo "和是=$SUM"
}
read -p "请输入第一个数=" n1
read -p "请输入第二个数=" n2
getSum $n1 $n2
Linux进阶之Shell编程的更多相关文章
- Linux命令行和shell编程
Shell Shell是一个程序,用户输入的命令通过shell来传达给内核或其它程序.用户在linux打开一个终端,终端就会自动调用用户的shell. Linux上的Shell有很多种,用的最多是sh ...
- Linux下的Shell编程
从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁.用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操 ...
- Linux 与 unix shell编程指南——学习笔记
第一章 文件安全与权限 文件访问方式:读,写,执行. 针对用户:文件属主,同组用户,其它用户. 文件权限位最前面的字符代表文件类型,常用的如 d 目录:l 符号链 ...
- Linux学习之Shell编程基础
转自:http://my.oschina.net/itblog/blog/204410 1 语法基本介绍1.1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来 ...
- linux下的Shell编程(3)shell里的流程控制
if 语句 if 表达式如果条件命令组为真,则执行 then 后的部分.标准形式: if 判断命令,可以有很多个,真假取最后的返回值 then 如果前述为真做什么 [ # 方括号代表可选,别真打进去了 ...
- Linux下的Shell编程(1)最简单的例子
深入地了解和熟练地掌握Shell编程,是每一个Linux用户的必修 功课之一. 从第一行开始 我们可以使用任意一种文字编辑器编写shell脚本,它必须以如下行开始(必须放在文件的第一行): #!/bi ...
- [No000014A]Linux简介与shell编程
Linux 介绍 内核 库: .so 共享对象,windows:dll 动态链接库 应用程序 Linux的基本原则: 1.由目的单一的小程序组成:组合小程序完成复杂任务: 2.一切皆文件: 3.尽量避 ...
- linux操作系统5 shell编程
知识内容: 1.shell编程预备知识 2.shell变量 3.表达式与运算符 4.分支循环语句 5.函数 一.shell编程预备知识 1.什么是shell编程 shell是与linux交互的基本工具 ...
- Linux下的shell编程入门
通常情况下,我们从命令行输入命令每输入一次就能够得到系统的一次响应.一旦需要我们一个接着一个的输入命令而最后才得到结果的时候,这样的做法显然就没有效率.要达到这样的目的,通常我们利用shell程序或者 ...
随机推荐
- 2019 4399java面试笔试题 (含面试题解析)
本人3年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.4399等公司offer,岗位是Java后端开发,最终选择去了4399. 面试了很多家公司,感觉大部分公司考察的点 ...
- php精度比较函数bccomp
bccomp (PHP 4, PHP 5, PHP 7) bccomp — 比较两个任意精度的数字 说明 int bccomp ( string $left_operand , string $rig ...
- PS利用蒙版抠图
扣图除了用锁套工具外,用蒙版时一个比较快的方法. 前期准备 首先准备一个PS CS6和一个神仙姐姐,一定要先Ctrl+J复制一份图层(不然待会神仙姐姐就找不到了). 使用色阶及反相获取轮廓 使用色阶使 ...
- js模块基础练习题
题目描述 完成函数 createModule,调用之后满足如下要求: 1.返回一个对象 2.对象的 greeting 属性值等于 str1, name 属性值等于 str2 3.对象存在一个 sayI ...
- vue创建项目(推荐)
上一节我们介绍了vue搭建环境的情况,并使用一种方式搭建了一个项目,在这里为大家推荐另一种创建项目的方式. vue init webpack-simple vuedemo02 cd vuedemo02 ...
- Spring框架的核心概念是什么?需要掌握的知识点都有哪些?
Spring其主要精髓 就是IOC和AOP.掌握好了这两点对于理解Spring的思想颇有意义. IOC(英文 Inversion of Control)就是控制反转的意思.就是把新建对象(new Ob ...
- vue-cli 移动端项目如何在手机上调试预览
这里分享下如何在webpack工具构建下的vue项目,在手机端调试和预览,言归正传. 1.电脑和手机连接到同一个WIFI a.台式电脑和手机同时链接一个路由器,使用同一个wifi: b.笔记本也可以直 ...
- Oracle恢复流程图
本图来自于网络,想当初小麦苗刚开始接触备份恢复的时候,就是靠着这张图来学习的,今天把这张图分享给大家,共勉. ............................................. ...
- selenium模拟鼠标键盘操作
简单操作: 1.点击(鼠标左键)页面按钮:click() 2.清空输入框:clear() 3.输入字符串:send_keys()submit提交表单: 1.一般情况可以点击搜索按钮来搜索 2.也可以用 ...
- liunx 安装nc/netcat centos安装netcat
如果本文对你有用,请爱心点个赞,提高排名,帮助更多的人.谢谢大家!❤ 如果解决不了,可以在文末进群交流. 1:下载源码包,wget https://sourceforge.net/projects/n ...