一、概述

sh (shell command language)是一种满足POSIX标准定义的脚本语言,有诸多具体实现(dash,ksh88等)。

bash是sh的一种实现(GNU Bourne-Again Shell),并且增加了很多扩展定义。例如,bash支持Conditionals [[ -f File ]] 返回文件是否存在(在dash中并没有这样的语法)。

ubuntu16.04中/bin/sh指向的是/bin/dash,以获得更快的脚本执行速度。Dash Shell 比 Bash Shell 小的多,符合POSIX标准。

二、执行shell脚本

.sh脚本

.sh脚本首行为一般指明执行这个脚本文件的解释程序(Shebang line),如果 #! 之后的解释程序是一个可执行文件,那么执行这个脚本时会把文件名及其参数一起作为参数传给解释程序执行。脚本解析器翻译或解析指令并执行(不需要编译)。添加了Shebang line后,可以直接执行该脚本。

Shebang line设置如下:

#!/bin/bash

或者

#!/bin/sh

运行该脚本在top中可以看到该进程,进程名为sh脚本名。

如无Shebang line,需要在命令行手动指定bash ./脚本运行, 这种情况脚本内命令仍然可以执行,但top中找不到该进程

sh脚本三种执行方式

./xxx.sh : 按照文件中#!指定的解析器解析,如果不存在#!指定的解析器,按照系统默认的解析器

bash xxx.sh:先用bash解析器解析,如果bash不存在,才会使用默认解析器

. xxx.sh:直接使用默认解析器解析(不会执行第一行的#!指定的解析器)但是第一行还是要写的

参考:shell脚本语言(超全超详细)_看见代码就想敲的博客-CSDN博客_shell脚本

三、bash语法

假设有一个脚本test.sh内容如下:

#!/bin/bash
echo $0 $1

执行该脚本./test.sh 1, 则屏幕打印出:./test.sh 1

$0 :shell脚本本身的名字;

$1 :给shell脚本传的第一个参数;

$2 :给shell脚本传的第二个参数;

$? :上个命令的退出状态,或函数的返回值。

注释多行:

:<<!
这里是被注释的代码1
这里是被注释的代码2
!

killall 进程名

杀死指定名字的进程。

例如:

kill top

命令代换

由“`”反引号括起来的内容为一条命令,Shell先执行该命令,然后将输出结果代换到当前命令行中。例如:

ffmpeg -i `find "./" -name "*test${i}*.h264"` -codec copy ./test${i}.mp4

其中,将查找的命令`find "./" -name "*fovs${i}*.h264"`的搜索结果作为输出,代换到ffmpeg命令中。

参考:Shell_c01cpp的博客-CSDN博客_shell字符串转换成整数

if语句

if [ command ];then符合该条件执行的语句
elif [ command ];then符合该条件执行的语句
else符合该条件执行的语句
fi

常用的判断条件参考:Shell if 条件判断_一生只画眉的博客-CSDN博客_shell 判断

while语句

while [ command ]
do符合该条件执行的语句
done

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. surface pro 3 linux,新闻|在Surface Pro 3上运行Ubuntu – 虽不完美但很有戏
  2. __CLASS__ get_class() get_called_class()区别
  3. 计算机视觉开源库OpenCV之边缘检测cv2.canny()函数
  4. jzoj4245-er【dp,贪心】
  5. 常用计算机网络性能指标的是什么,什么是Bit?【计算机网络的性能指标】
  6. 六、Webpack详解学习笔记——webpack的安装、起步、配置、loader的使用、webpack中配置Vue、plugin的使用、搭建本地服务器、webpack配置的分离
  7. pyqt安装_Win10下安装LabelImg以及使用(绝对是全网最简单的教程)
  8. 合成视频以假乱真新高度!商汤科技、中科院、南洋理工大学联合提出当前最高清的语音驱动视频生成系统...
  9. php sdk 调用示例,开放服务-SDK调用示例
  10. 提高程序员工作效率的几大工具
  11. 灰色关联分析_R语言使用灰色关联分析(Grey Relation Analysis,GRA)中国经济社会发展指标...
  12. BZOJ 1068: [SCOI2007]压缩
  13. python 阮一峰_Python模块整理
  14. java day11【final、权限、内部类、引用类型】
  15. 微信小程序中使用Echarts 折线图、柱形图、饼状图
  16. 2020智能营销领域最具商业合作价值企业盘点
  17. guzzle发起请求设置cookie失效
  18. 串口转以太网服务器市场现状研究分析与发展前景预测报告
  19. C#高斯平滑算法 :二维高斯卷积代码实例
  20. linaCharts开发笔记:Three.js导入obj和使用中文

热门文章

  1. WMF漏洞被疯狂利用 “QQ尾巴”借机传播(转)
  2. Win11怎么一键重置?Win11一键重置电脑的操作步骤
  3. Linux进入救援模式全盘修复,linux进入救援模式的方法
  4. android 双sd卡,华为Mate7如何实现双卡双待同时插入SD卡 华为Mate7双卡双待使用教程...
  5. Windows 终端中设置 Powerline
  6. 如何实现自律和提高效率?
  7. “阿凡达”给3D网络游戏敲醒警钟!!
  8. 雷神911x猎荒者 2023怎么样
  9. 爱奇艺算法工程师实习生面试总结
  10. Python3.6实现12306火车票自动抢票