文章目录
一.Shell概述
Shell 是一个命令行解释器,他接受应用程序/用户命令,然后调用操作系统内核
Shell 还是一个功能相当强大的编程语言,易编写,易调试,灵活性强
-
为什么要学习Shell
- 能够编写简单的Shell脚本用于大数据集群的管理(启动和停止)
- 能够看懂运维编写的脚本
-
查看linux提供的解析器内核
cat /etc/shells
主要用: /bin/sh /bin/bash
二.Shell脚本入门
-
脚本编写
- 格式: 必须以 #!bin/bash 开头(指定解析器)
- 文件名以 sh 结尾
-
脚本运行的方式
bash hello.sh
sh hello.sh
./hello.sh (自行运行 注意赋予执行权限 chmod u+x hello.sh)
. hello.sh
区别: . hello.sh 相当于在全局窗口中运行,另外三种 相当于在 子窗口中运行
三.变量
-
系统预定义变量
常用系统变量: $HOME $PWD $SHELL $USER
查看当前shell 所有变量 :set
-
自定义变量
定义变量: A=5
撤销变量: unset 变量
声明静态变量: readonly 变量 注意,不能unset
规则: 环境变量名建议大写;等号两侧不能有空格;定义的变量默认的都是字符串;如果值有空格,用括号括起来
提升为全局变量: export A
-
特殊变量
四.运算符
基本语法: $[运算式]
五.条件判断
基本语法:[ condition ] (注意 condition 前后要有空格)
注意: 条件非空即为true
-
字符串比较 :==
-
整数比较:
-lt -le -eq -ne -gt -ge
-
文件权限判断: -r -x -w
-
文件类型判断:
-f: 文件存在并且是一个常规文件
-d:文件存在并且是一个目录
-e: 判断文件是否存在
-
多条件判断: && ||
六.if基本语法
if [ condition ] # 注意空格
then
执行程序
elif [ conditioin ]
then
执行程序
else
执行程序
fi
注意: if 后要有空格; condition两侧要有空格
七.case语句
case 表达式 in
值)
执行程序
;;
值)
执行程序
;;
*)
默认执行程序
;;
esac
八.for语句
-
语法一
for (( i=0; i<10; i++))
do
执行程序
done
-
语法二
for i in v1 v2 v3
do
执行程序
done
九While语句
sum=0
i=0
while [ i − l e 100 ] d o s u m = i -le 100 ] do sum= i−le100]dosum=[ s u m + sum+ sum+i]
i= [ [ [i+1]
done
echo $sum
十控制台输入
read [-t value] [-p ‘请输入’] 变量
十一系统函数
basename: 获取文件或目录名称
dirname: 获取当前文件或目录的路径
十二自定义函数
function funname(){
return int;
}
function add()
{
return $[ $1+$2 ]
}
add 1 2
echo $?
注意:
- 在调用前声明 方可使用
- 函数返回值只能通过 $? 获取。如果不加,返回最后一条语句的执行结果
十三.工具
1.cut
cut 的工作就是“剪”,具体的说就是在文件中负责剪切数据用的。cut命令从文件的每一个行剪切字节、字符和字段并将这些字节、字段输出
**基本用法:**cut[选项参数] filename
选项参数 | 功能 |
---|---|
-f | 列号 |
-d | 分隔符(默认为tab键) |
例如:切ip地址
ifconfig|grep netmask|cut -d “t” -f 2|cut -d “n” -f 1
2.awk
一个强大的文本分析工具,把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分在进行分析处理
**基本语法:**awk[选项参数] ‘pattern{action} pattern{action} …’ filename
pattern 为匹配模式
action 为一系列命令
选项参数 | 功能 |
---|---|
-F | 分隔符 |
-v | 定义变量 |
例如:切ip地址
ifconfig|grep netmask|awk -F “inet " ‘{print $2}’|awk -F " net” ‘{print $1}’
内置函数:
BEGIN,END,FILENAME,NR,NF