文章目录

  • 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 显示光标

字符串操作

  1. 判断读取字符串值

    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 脚本的应用相关推荐

  1. 学习笔记之Linux Shell脚本教程:30分钟玩转Shell脚本编程

    Linux Shell脚本教程:30分钟玩转Shell脚本编程 http://c.biancheng.net/cpp/shell/ 转载于:https://www.cnblogs.com/pegasu ...

  2. Linux shell脚本基础学习

    Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提. 1. Li ...

  3. linux 检查权限,检查目录下 文件的权限-linux shell脚本,

    检查目录下 文件的权限-linux shell脚本, #!/bin/bash #History: #2019/07/23    Fsq #This Program will check Permiss ...

  4. Linux shell脚本数值计算个人心得

    Linux shell脚本数值计算个人心得 本篇博客为,个人对与bash数值计算的一些心得与用法. Bash对于数值是没有明确定义的,在shell里面所有的数值都默认为字符串,并不是单纯的数值. 比如 ...

  5. linux运维实战练习及linux shell脚本、awk、sed工具命令学习总结

    一.linux shell 脚本 1.描述shell程序的运行原理(可附带必要的图形说明): Linux系统的shell作为操纵系统的外壳,为用户提供使用操纵系统的接口.它是命令语言.命令解释程序及程 ...

  6. linux shell脚本字符串连接符,学习Linux shell脚本中连接字符串的方法

    这篇文章主要介绍了Linux shell脚本中连接字符串的方法,如果想要在变量后面添加一个字符,可以用一下方法: 代码如下: $value1=home $value2=${value1}"= ...

  7. linux下实用小脚本,十个增加 Linux Shell 脚本趣味的小工具

    很多人误以为shell脚本只能在命令行下使用.其实shell也可以调用一些GUI组件,例如菜单,警告框,进度条等等.你可以控制最终的输出,光标位置还有各种输出效果.下面我将介绍一些工具,帮助你创建强大 ...

  8. Linux Shell脚本入门--wget 命令用法详解

    Linux Shell脚本入门--wget 命令用法详解 wget是在Linux下开发的开放源代码的软件,作者是Hrvoje Niksic,后来被移植到包括Windows在内的各个平台上.它有以下功能 ...

  9. Linux shell脚本基础学习详细介绍(完整版)一

    Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提. 1. Li ...

  10. linux sh脚本 while,Linux shell脚本使用while循环执行ssh的注意事项

    原标题:Linux shell脚本使用while循环执行ssh的注意事项 如果要使用ssh批量登录到其它系统上操作时,我们会采用循环的方式去处理,那么这里存在一个巨大坑,你必须要小心了. 一.场景还原 ...

最新文章

  1. OpenCV 中的 Scalar 类、Vec类
  2. windows下sse性能对比
  3. Android开源介绍-UI组件
  4. transferto 文件不存在_文件上传时,MultipartFile.transferTo() 方法报 FileNotFoundException...
  5. java float 高效加减_java Double 进行加减乘除
  6. 开源硬件_如何参与开源硬件协会
  7. 编译原理pl/0 c语言版 pl0.h文件
  8. 可行性研究和软件项目计划主要完成什么工作?_软件生命周期
  9. Activity简介
  10. c语言输出合法的出栈算法,c语言栈的实现以及操作
  11. Function语意学之Member的各种调用方式
  12. sql 返回日期的年月部分_2019年要上映的部分热门电影及上映日期
  13. 小程序drawImage接口canvas生成产品海报失败
  14. 论文:Real-Time Referring Expression Comprehension by Single-Stage Grounding Network
  15. 近代光学系统设计概论学习笔记-第四章双胶合和双分离消色差物镜
  16. 什么是沟通能力?如何提升沟通能力?
  17. c#webservice接口調用_Windows 桌面应用开发之 C# 调用 WebService 接口
  18. 蓝牙遥控器连接流程分析
  19. Pairs(暴力,超详细简单)
  20. FBTFT driver St7789v LCD 移植简介

热门文章

  1. 马云发文称自己是灵魂歌手;雷军将投入230亿建设小米武汉总部丨价值早报
  2. 彻底卸载McAfee和Agent的方法
  3. 算法#16--B树完整代码Java实现
  4. 对口单招计算机电工试题答案,2015年对口单招机电专业电工技能试题一
  5. 好不容易从流水线转码农的我又“失业”了...
  6. [stm32] Start Tour-按键控制LED
  7. 电子狗服务器登记到本机信息,电子狗在线升级 车友在线全智能化操作
  8. Android使用图片资源
  9. 几种傅里叶变换之间的关系
  10. 今日小程序推荐:熊猫签证-足不出户办签证