LINUX--shell 脚本的应用
文章目录
- shell是什么
- 常用的shell
- Bash配置文件
- shell 变量
- shell 脚本
- Shell脚本编程特点
- 脚本编辑和运行过程
- shell脚本编写
- 一个交互式设计
- 命令集
- 命令参数
- shell 脚本语法
- 变量
- 读写变量
- echo的高级使用
- 字符串操作
- 数组
- 表达式
shell是什么
1.Shell: linux壳
2.Kernel: linux内核
常用的shell
- Bourne Shell (sh)
- • C Shell (csh)执行效率有点差,多用于交互
- • Korn Shell (Bourne Shell 超集 ) (ksh)集合了 Cshell 和 Bourne shell 的优点并且和 Bourne shell 完全兼容
Bash配置文件
bash_history
记录命令历史记录bash_logout
退出 Shell 时要执行的命令bash_profile
登入 Shell 时要执行的命令,只在会话开始时被读取一次bashrc
每次打开新的 Shell 时要执行的命令
别名和函数之类通常放在该文件中
shell 变量
shell 脚本
Shell脚本编程特点
脚本语言往往是解释运行而非编译,即由解释器(Interpreter)读入脚本程序代码,将其转换成内部的形式执行,而解释器本身则是编译型程序。
Shell脚本语言是Linux/UNIX系统上一种重要的脚本语言,在Linux/UNIX领域应用极为广泛,熟练掌握Shell脚本语言是一个优秀的Linux/UNIX开发者和系统管理员的必经之路。利用Shell脚本语言可以简洁地实现复杂的操作,而且Shell脚本程序往往可以在不同版本的Linux/UNIX系统上通用
脚本编辑和运行过程
- 编辑文件
可使用vim, gedit, kate等文本编辑器。保存文件,一般地将文件保存为***.sh - 赋予文件可执行权限
– chmod +x ***.sh - 运行及排错
– 运行方式:./***.sh (当前目录下运行)或者 sh ***.sh, bash ***.sh (取决你用哪种shell)
shell脚本编写
一个交互式设计
Teminal下读入你的名字,并欢迎
#!/bin/bash
echo "What's your name?"
read name
echo "Welcome,$name"
命令集
编写一个 Shell 程序 mkf,此程序的功能:显示 root 下的文件信息,然后建立一个 kk 的文件夹,在此文件夹下建立一个文件 aa,修改此文件的权限为可执行。
a.sh
cd /root
mkdir kk
cd kk
vi aa
chmod +x aa
cd /root
命令参数
shell 脚本语法
变量
一个bash变量默认是一个字符串,但可以把一个变量定义为一个整形值、数组和函数,可以使用declare和typeset命令来声明变量,对它们初始化,并设定它们的属性。
语法:declare [options] [name[=value]]
typeset [options] [name[=value]]
用途:声明变量、初始化变量、设置变量属性
读写变量
- 变量赋值 变量名=值
注意等号=两侧没有空格,如果值有空格,必须用引号
- 访问变量值 $变量名
a="How are you"
echo "He just said: $a"
- 从键盘读入变量值/屏幕输出
read a
echo "you just input $a"read var1 var2 ...
read –p “string” var1 var2 … varn
echo $var1 $var2
echo的高级使用
更多命令选项
-n 输完后不换行
-e 激活特殊字符/设置
-E 关闭特殊字符/设置(默认)
各种颜色字符输出
echo -e "\033[字背景颜色;字体颜色m字符串\033[0m"
ANSI控制码的说明
\33[0m 关闭所有属性
\33[1m 设置高亮度
\33[4m 下划线
\33[5m 闪烁
\33[7m 反显
\33[8m 消隐
\33[30m --\33[37m 设置前景色
\33[40m – \33[47m 设置背景色
\33[nA 光标上移n行 \33[nB 光标下移n行 \33[nC 光标右移n行 \33[nD 光标左移n行 \33[y;xH设置光标位置
\33[2J 清屏
\33[K 清除从光标到行尾的内容
\33[s 保存光标位置
\33[u 恢复光标位置
\33[?25l 隐藏光标
\33[?25h 显示光标
字符串操作
- 判断读取字符串值
2.字符串操作(长度,读取,替换)
数组
1.赋值
(1) array=(var1 var2 var3 ... varN)
(2) array=([0]=var1 [1]=var2... [n]=varN)
(3) array[0]=var1
array[1]=var2
...
array[n]=varN
引用数组
echo ${array[n]}
计算数组元素个数
${#array[*]}
#!/bin/bash ##声明bahs
names=(xiaoming daxiong [10]=yadam)
echo ${names[1]} ${names[10]}
declare -a arr[10] ## 声明是一个数组
arr[0]=ifcen
arr[2]=ocen
arr[4]=earth
echo ${arr[4]} ##结果:earth
echo ${arr[*]} ##打印全部
表达式
- 数字运算
expr integer operator integer
其中operator为 +、-、*、/、% (取余数), 但对 * 的使用要 的使用要用转义符,如:
expr 4 \* 5
20
int=`expr 5 + 7`
echo $int
12
1.注意 ` 是左上角esc下面的那个键。这叫倒引号(backticks),里面是命令,会执行
2.注意,这里每一个数字和符号均为参数,它们之间要用空格分开
更多的bash运算
+, -, *, /, %取模(取余), **(乘方)
实现算术运算:
(1) let var=算术表达式
(2) var=$[算术表达式]
(3) var=$((算术表达式)) //推荐使用这种类C风格
(4) var=$(expr arg1 arg2 arg3 ...)
(5) declare –i var = 数值
(6) echo ‘算术表达式’ | bc
注意:乘法符号有些场景中需要转义,如*
bash有内建的随机数生成器:$RANDOM(0-32767)
LINUX--shell 脚本的应用相关推荐
- 学习笔记之Linux Shell脚本教程:30分钟玩转Shell脚本编程
Linux Shell脚本教程:30分钟玩转Shell脚本编程 http://c.biancheng.net/cpp/shell/ 转载于:https://www.cnblogs.com/pegasu ...
- Linux shell脚本基础学习
Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提. 1. Li ...
- linux 检查权限,检查目录下 文件的权限-linux shell脚本,
检查目录下 文件的权限-linux shell脚本, #!/bin/bash #History: #2019/07/23 Fsq #This Program will check Permiss ...
- Linux shell脚本数值计算个人心得
Linux shell脚本数值计算个人心得 本篇博客为,个人对与bash数值计算的一些心得与用法. Bash对于数值是没有明确定义的,在shell里面所有的数值都默认为字符串,并不是单纯的数值. 比如 ...
- linux运维实战练习及linux shell脚本、awk、sed工具命令学习总结
一.linux shell 脚本 1.描述shell程序的运行原理(可附带必要的图形说明): Linux系统的shell作为操纵系统的外壳,为用户提供使用操纵系统的接口.它是命令语言.命令解释程序及程 ...
- linux shell脚本字符串连接符,学习Linux shell脚本中连接字符串的方法
这篇文章主要介绍了Linux shell脚本中连接字符串的方法,如果想要在变量后面添加一个字符,可以用一下方法: 代码如下: $value1=home $value2=${value1}"= ...
- linux下实用小脚本,十个增加 Linux Shell 脚本趣味的小工具
很多人误以为shell脚本只能在命令行下使用.其实shell也可以调用一些GUI组件,例如菜单,警告框,进度条等等.你可以控制最终的输出,光标位置还有各种输出效果.下面我将介绍一些工具,帮助你创建强大 ...
- Linux Shell脚本入门--wget 命令用法详解
Linux Shell脚本入门--wget 命令用法详解 wget是在Linux下开发的开放源代码的软件,作者是Hrvoje Niksic,后来被移植到包括Windows在内的各个平台上.它有以下功能 ...
- Linux shell脚本基础学习详细介绍(完整版)一
Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提. 1. Li ...
- linux sh脚本 while,Linux shell脚本使用while循环执行ssh的注意事项
原标题:Linux shell脚本使用while循环执行ssh的注意事项 如果要使用ssh批量登录到其它系统上操作时,我们会采用循环的方式去处理,那么这里存在一个巨大坑,你必须要小心了. 一.场景还原 ...
最新文章
- OpenCV 中的 Scalar 类、Vec类
- windows下sse性能对比
- Android开源介绍-UI组件
- transferto 文件不存在_文件上传时,MultipartFile.transferTo() 方法报 FileNotFoundException...
- java float 高效加减_java Double 进行加减乘除
- 开源硬件_如何参与开源硬件协会
- 编译原理pl/0 c语言版 pl0.h文件
- 可行性研究和软件项目计划主要完成什么工作?_软件生命周期
- Activity简介
- c语言输出合法的出栈算法,c语言栈的实现以及操作
- Function语意学之Member的各种调用方式
- sql 返回日期的年月部分_2019年要上映的部分热门电影及上映日期
- 小程序drawImage接口canvas生成产品海报失败
- 论文:Real-Time Referring Expression Comprehension by Single-Stage Grounding Network
- 近代光学系统设计概论学习笔记-第四章双胶合和双分离消色差物镜
- 什么是沟通能力?如何提升沟通能力?
- c#webservice接口調用_Windows 桌面应用开发之 C# 调用 WebService 接口
- 蓝牙遥控器连接流程分析
- Pairs(暴力,超详细简单)
- FBTFT driver St7789v LCD 移植简介
热门文章
- 马云发文称自己是灵魂歌手;雷军将投入230亿建设小米武汉总部丨价值早报
- 彻底卸载McAfee和Agent的方法
- 算法#16--B树完整代码Java实现
- 对口单招计算机电工试题答案,2015年对口单招机电专业电工技能试题一
- 好不容易从流水线转码农的我又“失业”了...
- [stm32] Start Tour-按键控制LED
- 电子狗服务器登记到本机信息,电子狗在线升级 车友在线全智能化操作
- Android使用图片资源
- 几种傅里叶变换之间的关系
- 今日小程序推荐:熊猫签证-足不出户办签证