创建新shell脚本

1. 创建包含bash命令的文本文件。文件的第一行应为:

#!/bin/bash
2. 使文件可执行(使用chmod +x scripts)
3. 将文件放置在用户的$PATH的目录中
~/bin – 用于用户的私有程序
/usr/local/bin – 本地开发、系统上的其他人使用的脚本
/usr/local/sbin - 本地开发、由root使用的脚本
直接运行脚本和使用source命令运行脚本是不同的!
脚本调试模式:
#!/bin/bash -x

# bash -x scripts

引用和转义
引用和转义在shell解析字符串时用于去除字符串中特殊字符或保留词语的特殊含义。这会导致按字面处理字符串,而不是展开变量或将其部分内容视作具有特殊含义。
引用有三种类型:
弱引用
将字符串放置在双引号中,保留字符串中所有字符的文字值,$、`、\和!字符除外。换言之,变量扩展和命令扩展在双引号内仍起作用。
echo “can I have a $FRUIT”
echo “The current time is $(date +%r).”

强引用
将字符串放置在单引号中,保留字符串中所有字符的文字值,同时禁用所有扩展:
echo “Make $$$ Fast”
rm 'untitled folder'

转义
非引用的\是转义字符。它保留了下一个字符的文字值。(例如,\$PATH是确切的字符串$PATH,而
不是PATH变量的内容。)
echo Make \$\$\$ Fast\!
ls untitled\ folder

Shell变量
shell变量用于为稍后在脚本中使用的名称指定值,并且仅限于shell命令行或从中声明变量的脚本。

命令替换
命令替换在子shell中执行指定命令并用命令输出替换脚本中的命令替换。

算术运算符
算术运算符指的是可以在程序中实现加、减、乘、除等数学运算的运算符。

Shell计算命令:
用$[]表示数学运算。
# echo $[1+2]
# a=1; echo $[$[$a+1]*2]

用expr表示数学运算。
# echo `expr 1 + 2`

用let指示数学运算。
# let A=1+2
# echo $A

用(())表示数学运算。bash内建功能,效率高。

#!/bin/bash
for ((i=1;i<10;i++))
do
((j+=i))
done
echo $j

循环
for循环用于值列表中的相同命令的重复。

循环与计算结合:

Bash位置参数

使用位置参数来读取传递给脚本的命令行参数或选项输入。各种特殊变量存储传递的选项编号
Bash解析的个别参数或整个原始命令行。
指定的位置参数总数:$#
位置参数自身:$0、$1、$2、$3....
所有位置参数: $@、$*

退出状态
Linux命令完成时,将返回退出状态。成功完成程序时,将返回0的推出状态。这被bash
当作逻辑True值。非零退出状态通常表示发生了错误,并且被bash当作逻辑False值。
例如:grep的退出状态的含义:
0 – 在指定的文件中找到了模式
1 – 在指定的文件中未找到模式
>1 – 一些其他错误(无法打开文件、错误的搜索表达式等)
推出状态的值被存储在"?"中,可以使用以下命令查看:
# echo $?

test条件判断
test命令可用于评估bash脚本中的表达式。它评估其参数所指定的表达式,如果表达式
为true,返回零退出状态,如果表达式为false,则返回非零退出状态。test具有替代语
法,使用方括号"[]"将表达式括起来,这样更易于阅读。

-n        ##有无数值

-z      ##是否为空

-e       ##是否存在

-d       ##类型为目录i

-f        ##类型为文件

-s       ##类型为socket

-L       ##类型为link

-eq     ##等于

-ne     ##不等

-lt        ##小于

-le       ##小于等于

-gt      ##大于

-ge     ##大于等于

if语句
if命令检查if后面的命令或列表的退出值。如果第一个命令评估为true/零,则运行then之后的命令列表,直至任一else。如果第一个命令评估为false/非零,则运行else与fi之间的命令列表(反向平写if,标记if块的结束)。

case语句
case语句 :它能够把变量的内容与多个模板进行匹配,再根据成功匹配的模板去决定应该执行哪部分代码.

expect语句
在shell中利用expect实现自动应答脚本。

倒数五秒计时脚本

测试和其他主机是否连通

判断文件类型

本文转自Super_MONKEY 51CTO博客,原文链接:http://blog.51cto.com/supermk/1940558

Bash scripts相关推荐

  1. gitlab bash_如何编写Bash一线式以克隆和管理GitHub和GitLab存储库

    gitlab bash Few things are more satisfying to me than one elegant line of Bash that automates hours ...

  2. Bash脚本和/ bin / bash ^ M:错误的解释器:没有这样的文件或目录[重复]

    本文翻译自:Bash script and /bin/bash^M: bad interpreter: No such file or directory [duplicate] This quest ...

  3. linux shell 安装curl,bash – 不能使用curl安装NPM

    尝试安装NPM时收到此错误.对此错误的任何帮助都非常感激. $ curl http://npmjs.org/install.sh | sh % Total % Received % Xferd Ave ...

  4. bash: vagrant_重新引入Vagrant:从PHP开始的正确方法

    bash: vagrant I often get asked to recommend beginner resources for people new to PHP. And, it's tru ...

  5. 不寻常的单元测试,第1部分:带蝙蝠的bash脚本

    介绍 (Introduction) In my work I often see well-intended implementations of CI/CD pipelines that might ...

  6. shell bash脚本_如何在Windows 10上创建和运行Bash Shell脚本

    shell bash脚本 With the arrival of Windows 10's Bash shell, you can now create and run Bash shell scri ...

  7. bash 获取脚本存放路径_如何获取Bash脚本自己的路径

    bash 获取脚本存放路径 Bash script may need to get its own path. In normal Bash script, $0 is the path to the ...

  8. bash非交互式探测telnet端口

    文章目录 环境 telnet命令 curl命令 python telnetlib expect 参考 环境 sys: CentOS-7.9 curl: curl 7.29.0 telnet命令 $ ( ...

  9. Bash 脚本如何创建临时文件:mktemp 命令和 trap 命令教程

    有时,Bash 脚本需要创建临时文件或临时目录. 常见的做法是,自己在/tmp目录里面生成一个文件,这样做有很多弊端.本文介绍如何安全地处理临时文件. 一.临时文件的安全问题 直接创建临时文件,尤其在 ...

最新文章

  1. Akamai托管服务应对多重网络性能挑战
  2. vb.net服务器启动后cpu占用了70_记一次服务器被异常程序占用的解决过程(怀疑黑客攻击)...
  3. 十、关于MySQL 标识列,你该了解这些!
  4. C++利用栈实现计算器
  5. 递归;杨辉三角;正则表达式
  6. 财务造假丑闻后,瑞幸遭大股东清仓股份,CEO和COO双双被停职
  7. 34个有用的 JavaScript 库,现在就可以用起来
  8. 简单理解聚集索引和非聚集索引
  9. H.265中针对scc的工具 -- transformskip
  10. stm32驱动ili9486液晶显示屏
  11. 用Unity做游戏,你需要深入了解一下IL2CPP
  12. 深度学习:乳腺检测abnormality detection in mammography +CAM
  13. ArcGIS中WGS84转为西安80(无自带转换参数的坐标系转换)
  14. Android中判断应用是否第一次打开
  15. YOLOX训练自己的数据集(VOC)
  16. testin云测操作
  17. java实现头像上传 前后端
  18. 【基础概念】什么是benchmark model?
  19. STC32G 三电感电磁循迹小车
  20. Android Jetpack- Paging3.0的使用

热门文章

  1. 常考数据结构与算法:反转链表
  2. servlet输出html
  3. mybaits十二:使用collection嵌套结果集查询
  4. mybaits九:自定义结果映射规则
  5. 浏览器标准模式与怪异模式的区别
  6. 如何把Word里的公式放到PowerPoint里
  7. python多线程编程: 条件变量同步
  8. 【技术贴】五分钟解决打开软件提示windows正在设置Microsoft Office Profes
  9. Docker命令基础 简洁版本
  10. cvr存储服务器的优势,CVR存储设备的结构与优势分析