学习shell脚本主要是为了方便一部分的自动化运维,如一些软件的自动化的安装,避免反反复复的敲命令,尽管使用python写管理脚本更加方便,但是学一下shell还是很有必要的。  本文中使用的shell为bash。  1. 第一个shell脚本touch test.sh #新建脚本文件 chmod u+x test.sh
转载 2024-05-15 07:31:52
85阅读
目录Shebang 行执行权限和路径env 命令注释脚本参数shift 命令getopts 命令配置项参数终止符 --exit 命令命令执行结果source 命令别名,alias 命令脚本(script)就是包含一系列命令的一个文本文件。Shell 读取这个文件,依次执行里面的所有命令,就好像这些命令直接输入到命令行一样。所有能够在命令行完成的任务,都能够用脚本完成。脚本的好处是可以重复使用,也可以指定在特定场合自动调用,比如系统启动或关闭时自动执行脚
原创 2021-06-18 11:05:22
424阅读
目录常见错误bash的-x参数环境变量LINENOFUNCNAMEBASH_SOURCEBASH_LINENO常见错误编写 Shell 脚本的时候,一定要考虑到命令失败的情况,否则很容易出错。#! /bin/bashdir_name=/path/not/existcd $dir_namerm *上面脚本中,如果目录$dir_name不存在,cd $dir_name命令就会执行失败。这时,就不会改变当前目录,脚本会继续执行下去,导致rm *命令删光.
原创 2021-06-18 11:05:15
265阅读
目录简介参数变量return 命令全局变量和局部变量,local 命令简介函数(function)是可以重复使用的代码片段,有利于代码的复用。它与别名(alias)的区别是,别名只适合封装简单的单个命令,函数则可以封装复杂的多行命令。函数总是在当前 Shell 执行,这是跟脚本的一个重大区别,Bash 会新建一个子 Shell 执行脚本。如果函数与脚本同名,函数会优先执行。但是,函数的优先级不如别名,即如果函数与别名同名,那么别名优先执行。Bash 函数定义的语法有两种.
原创 2021-06-18 11:05:18
131阅读
这篇文档写的非常好,对想了解set命令的朋友,推荐看看。 http://www.ruanyifeng.com/blog/2017/11/bash-set.html
转载 2020-12-14 16:47:00
601阅读
2评论
目录创建数组读取数组读取单个元素读取所有成员默认位置数组的长度提取数组序号提取数组成员追加数组成员删除数组关联数组数组(array)是一个包含多个值的变量。成员的编号从0开始,数量没有上限,也没有要求成员被连续索引。创建数组数组可以采用逐个赋值的方法创建。ARRAY[INDEX]=value上面语法中,ARRAY是数组的名字,可以是任意合法的变量名。INDEX是一个大于或等于零的整数,也可以是算术表达式。注意数组第一个元素的下标是0, 而不是
原创 2021-06-18 11:05:17
837阅读
目录while 循环until 循环for...in 循环for 循环break,continueselect 结构Bash 提供三种循环语法for、while和until。while 循环while循环有一个判断条件,只要符合条件,就不断循环执行指定的语句。while condition; do commandsdone上面代码中,只要满足条件condition,就会执行命令commands。然后,再次判断是否满足条件condition,只要满足,就会
原创 2021-06-18 11:05:19
284阅读
http://www.ruanyifeng.com/blog/2017/11/bash-set.html set命令是 Bash 脚本的重要环节,却常常被忽视,导致脚本的安全性和可维护性出问题。本文介绍它的基本用法,让你可以更安心地使用 Bash 脚本。 一、简介 我们知道,Bash 执行脚本的时候
服务器的开发和管理离不开 Bash 脚本,掌握它需要学习大量的细节。 set命令是 Bash 脚本的重要环节,却常常被忽视,导致脚本的安全性和可维护性出问题。本文介绍它的基本用法,让你可以更安心地使用 Bash 脚本。 一、简介 我们知道,Bash 执行脚本的时候,会创建一个新的 Shell。 $
转载 2022-07-20 14:33:21
74阅读
目录if 结构test 命令判断表达式文件判断字符串判断整数判断正则判断test 判断的逻辑运算算术判断普通命令的逻辑运算case 结构if 结构if是最常用的条件判断结构,只有符合给定条件时,才会执行指定的命令。它的语法如下。if commands; then commands[elif commands; then commands...][else commands]fi这个命令分成三个部分:if、elif和els.
原创 2021-06-18 11:05:20
191阅读
目录echo 命令-n参数-e参数命令格式空格分号命令的组合符&&和||type 命令快捷键echo 命令由于后面的例子会大量用到echo命令,这里先介绍这个命令。echo命令的作用是在屏幕输出一行文本,可以将该命令的参数原样输出。$ echo hello worldhello world上面例子中,echo的参数是hello world,可以原样输出。如果想要输出的是多行文本,即包括换行符。这时需要把多行文本放在引号里面.
原创 2021-06-18 11:05:30
176阅读
目录Session登录 Session非登录 Session.bash_logout启动选项键盘绑定Session用户每次使用 Shell,都会开启一个与 Shell 的 Session(对话)。Session 有两种类型:登录 Session 和非登录 Session,也可以叫做 login shell 和 non-login shell。登录 Session登录 Session 是用户登录系统以后,系统为用户开启的原始 Session,通常需要用户..
原创 2021-06-18 11:05:13
261阅读
目录简介set -uset -xBash 的错误处理set -eset -o pipefail其他参数set 命令总结shopt 命令set命令是 Bash 脚本的重要环节,却常常被忽视,导致脚本的安全性和可维护性出问题。本章介绍set的基本用法,帮助你写出更安全的 Bash 脚本。简介我们知道,Bash 执行脚本时,会创建一个子 Shell。$ bash script.sh上面代码中,script.sh是在一个子 Shell 里面执行。这个子 Sh
原创 2021-06-18 11:05:16
145阅读
目录cd -pushd,popddirs 命令为了方便用户在不同目录之间切换,Bash 提供了目录堆栈功能。cd -Bash 可以记忆用户进入过的目录。默认情况下,只记忆前一次所在的目录,cd -命令可以返回前一次的目录。# 当前目录是 /path/to/foo$ cd bar# 重新回到 /path/to/foo$ cd -上面例子中,用户原来所在的目录是/path/to/foo,进入子目录bar以后,使用cd -可以回到原来的目录。pushd,popd.
原创 2021-06-18 11:05:23
164阅读
目录简介光标移动清除屏幕编辑操作自动补全操作历史基本用法history 命令相关快捷键其他快捷键简介Bash 内置了 Readline 库,具有这个库提供的很多“行操作”功能,比如命令的自动补全,可以大大加快操作速度。这个库默认采用 Emacs 快捷键,也可以改成 Vi 快捷键。$ set -o vi下面的命令可以改回 Emacs 快捷键。$ set -o emacs如果想永久性更改编辑模式(Emacs / Vi),可以将命令写在.
原创 2021-06-18 11:05:24
153阅读
目录简介创建变量读取变量删除变量输出变量,export 命令特殊变量变量的默认值declare 命令readonly 命令let 命令Bash 变量分成环境变量和自定义变量两类。简介环境变量是 Bash 环境自带的变量,进入 Shell 时已经定义好了,可以直接使用。它们通常是系统定义好的,也可以由用户从父 Shell 传入子 Shell。env命令或printenv命令,可以显示所有环境变量。$ env# 或者$ printenv下面是
原创 2021-06-18 11:05:27
485阅读
目录用法参数IFS 变量用法有时,脚本需要在执行过程中,由用户提供一部分数据,这时可以使用read命令。它将用户的输入存入一个变量,方便后面的代码使用。用户按下回车键,就表示输入结束。read命令的格式如下。read [-options] [variable...]上面语法中,options是参数选项,variable是用来保存输入数值的一个或多个变量名。如果没有提供变量名,环境变量REPLY会包含用户输入的一整行数据。下面是一个例子demo.sh。#!/b.
原创 2021-06-18 11:05:21
322阅读
目录算术表达式数值的进制位运算逻辑运算赋值运算求值运算expr 命令let 命令算术表达式((...))语法可以进行整数的算术运算。$ ((foo = 5 + 5))$ echo $foo10((...))会自动忽略内部的空格,所以下面的写法都正确,得到同样的结果。$ ((2+2))$ (( 2+2 ))$ (( 2 + 2 ))这个语法不返回值,命令执行的结果根据算术运算的结果而定。只要算术结果不是0,命令就算执行成功。$ (.
原创 2021-06-18 11:05:25
409阅读
初学者编写bash脚本教程bashshellscript定义bashbash是命令语言解释器。广泛用于各种gun/unix系统上的默认命令解释器。全程叫做“Bourne-AgainSHell”shellshell是一个宏处理器,允许执行交互式或非交互式的命令。scripting脚本允许自动执行,否则会一个接一个命令交互执行。什么是shellshell允许你通过命令与计算机交互,从而检索或存储数据、
原创 2018-09-11 11:30:44
8692阅读
1点赞
目录转义单引号双引号Here 文档Here 字符串转义某些字符在 Bash 里面有特殊含义(比如$、&、*)。$ echo $date$上面例子中,输出$date不会有任何结果,因为$是一个特殊字符。如果想要原样输出这些特殊字符,就必须在它们前面加上反斜杠,使其变成普通字符。这就叫做“转义”(escape)。$ echo \$date$date上面命令中,只有在特殊字符$前面加反斜杠,才能原样输出。反斜杠本身也是特殊字符,如果想要原.
原创 2021-06-18 11:05:28
335阅读
  • 1
  • 2
  • 3
  • 4
  • 5