shell脚本¶
特殊字符¶
- #:注释
- ;:命令分隔符
- ;;:case语句结束符
- ':单引号,原样输出
- ":双引号,可以输出变量名
- `:命令替换
字符串¶
数组¶
创建数组:
访问数组元素:
遍历数组:
字典¶
创建字典:
访问字典:
# 访问特定键的值
echo ${dictionary[key1]}
# 访问所有键
echo ${!dictionary[*]}
# 访问所有值
echo ${dictionary[*]}
# 访问字典长度
echo ${#dictionary[*]}
遍历字典:
特殊参数¶
参数名 | 含义 |
---|---|
$0 | 脚本名称 |
$1-$9 | 位置参数 |
$# | 参数个数 |
$@ | 所有参数 |
$? | 上一条命令的退出状态 |
$$ | 当前shell的pid |
$_ | 上一条命令的最后一个参数 |
流程控制¶
if else:
for while:
while:
case:
case "${opt}" in
"Install-Puppet-Server" )
install_master $1
exit
;;
"Install-Puppet-Client" )
install_client $1
exit
;;
"Exit" )
exit
;;
* ) echo "Bad option, please choose again"
esac
条件判断¶
整数条件:
- -eq:等于
- -ne:不等于
- -gt:大于
- -ge:大于等于
- -lt:小于
- -le:小于等于
字符串条件:
- -z:空字符串
- -n:非空
- ==:等于
- !=:不等于
文件条件:
- -e:存在
- -d:目录
- -f:普通文件
- -h:符号链接
- -r:可读
- -w:可写
- -x:可执行
处理输入¶
getopt¶
getopt
命令在处理命令行选项和参数时非常方便。它可以接受一系列任意形式的命令行选项和参数,并自动将其转换成适当的格式。它的基本格式为:getopt [options] [parameters]
。你需要在[options]中列出脚本中所有要用到的选项,如果需要有参数值就跟一个冒号。
getopts¶
getopts
命令与getopt
命令类似,但它只能处理短选项,并且只能处理一组选项。下面举一个简单的例子:
#!/bin/bash
while getopts "a:b:c" opt
do
case $opt in
a)
echo "option a with value $OPTARG"
;;
b)
echo "option b with value $OPTARG"
;;
c)
echo "option c with no value"
;;
\?)
echo "unknown option: -$OPTARG"
exit 1
;;
esac
done
函数¶
使用函数时需要注意以下几点:
- 函数局部变量,在函数被调用之后,外部可见。
- 调用函数时可以传参,函数体内部通过
$n
的形式来获取参数 - 用return表示函数返回值,在函数调用后通过
$?
来获取返回值
grep¶
grep是文本搜索工具,用于在文件中搜索符合正则表达式的内容,并打印出来。
基本格式:grep [options] pattern [file...]
- pattern:过滤条件
- file:要搜索的文件(一个或多个)
常用选项参数:
参数 | 说明 |
---|---|
-i | 忽略大小写 |
-n | 显示匹配行号 |
-r | 递归搜索目录 |
-l | 只显示文件名 |
-c | 只显示匹配行数 |
-o | 只显示匹配的内容 |
-w | 只匹配过滤到的单词 |
-v | 反向选择,只显示不匹配的行 |
-A num | 显示匹配行及之后的num行 |
-B num | 显示匹配行及之前的num行 |
-C num | 显示匹配行及上下各num行 |
-E | 使用扩展正则(等同于egrep) |
-F | 使用规定字符串模式(等同于fgrep) |
-P | 使用perl正则表达式 |
sed¶
sed是一个流编辑器,主要用于对文本进行非交互式编辑。它可以进行插入、删除、替换、提取等操作,是文本处理和转换的利器。
基本格式:sed [options] 'script' file
- script:sed内置的命令脚本,主要用于对文件进行增删改查等操作
- a:追加
- d:删除匹配行
- i:插入文本
- p:打印匹配行
- s/正则/替换内容/g:匹配正则,然后替换,g表示全局替换
awk¶
awk是一个强大的文本处理工具,主要用于对结构化数据进行模式扫描和处理,有着强大的文本格式化能力。它支持复杂的操作和脚本编写,能够进行模式匹配、文本处理、数据报告生成等。
基本格式:awk [options] 'pattern {action}' file
颜色¶
上面这段代码将输出绿色文本。注意,在设置文本输出后,一定要使用\033[0m
来恢复默认颜色。
一些常用的颜色代码有:
颜色 | 前景色 | 背景色 |
---|---|---|
黑色 | 30 | 40 |
红色 | 31 | 41 |
绿色 | 32 | 42 |
黄色 | 33 | 43 |
蓝色 | 34 | 44 |
紫色 | 35 | 45 |
青色 | 36 | 46 |
白色 | 37 | 47 |