网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
###### 3.seq主要是和for循环配合使用,用来控制for循环的次数
$(命令) --》得到命令执行的结果
将seq 5命令执行的结果赋值给变量怒num,保存了命令执行的结果,方便后面的脚本使用
[root@xiaoliu lianxi]# num=$(seq 5)
[root@xiaoliu lianxi]# echo $num
1 2 3 4 5
##### 四、read命令: 接收用户标准输入
###### 1.用法:
[root@xiaoliu shell_test]# read -p “请输入用户数字:” num1
请输入用户数字:43
[root@xiaoliu shell_test]# echo $num1
43
[root@xiaoliu shell_test]# echo asfd
asfd
[root@xiaoliu shell_test]# echo num1
num1
[root@xiaoliu shell_test]# read a b
sadfad
[root@xiaoliu shell_test]# echo $a
sadfad
[root@xiaoliu shell_test]# echo $b
[root@xiaoliu shell_test]# echo $?
0
[root@xiaoliu shell_test]# read a b c
xx yy zz dd fff
[root@xiaoliu shell_test]# echo $a
xx
[root@xiaoliu shell_test]# echo $b
yy
[root@xiaoliu shell_test]# echo $c
zz dd fff
[root@xiaoliu shell_test]#
##### 五、shell的基本语法–while循环
###### 1.定义:
while read line
do
循环执行语句
done
2.
while 条件:
do
循环执行语句
done
###### 2.例子:
#!bin/bash
while read line
do
echo "这一行为"$line
done < test.txt
#!bin/bash
cat test.txt|while read line
do
echo "这一行为"$line
done
注意:此语法中,while循环也支持break和continue
###### 3.小练习:
需求:
#有一个fuwu.txt文本,文本内容如下
[root@zabbix-agent-nginx shell-test]# cat fuwu.txt
IP AREA QUFU
192.168.0.1 HUNAN 2 89 60
192.168.1.1 HUNAN 3
192.168.3.1 HUBEI 4 9 10
192.168.4.1 HAINAN 56 34
192.168.5.1 HUHUA 8
输出每一个HUNAN地区的ip和qufu的映射关系
192.168.0.1的区服为:2
192.168.0.1的区服为:89
192.168.0.1的区服为:60
192.168.1.1的区服为:3
答案:
方法一:
#!bin/bash
cat fuwu.txt|grep “HUNAN”|while read a b c
do
for i in $c
do
echo
a
"
的区服为:
"
a"的区服为:"
a"的区服为:"i
done
done
方法二:
#!bin/bash
while read ip name qufu
do
if [ $name == “HUNAN” ]
then
for i in $qufu
do
echo
i
p
"
的区服为:
"
ip"的区服为:"
ip"的区服为:"i
done
fi
done < fuwu.txt
##### 六、shell基本语法–if语句
###### 1.if语句的三种格式
if 条件
then
执行语句
fi
2.
if 条件
then
执行语句
else
执行语句
fi
3.
if [ command ];then
符合该条件执行的语句
elif [ command ];then
符合该条件执行的语句
else
符合该条件执行的语句
fi
###### 2.[ ]表示条件测试。注意这里的空格很重要。要注意在’[‘后面和’]'前面都必须要有空格。
2.1常用判断:
[ -d FILE ] 如果 FILE 存在且是一个目录则返回为真。
[ -f FILE ] 如果 FILE 存在且是一个普通文件则返回为真。
案例:
#!bin/bash
if [ -f test.txt ]
then
echo "文件已存在"
else
echo "文件不存在"
fi
if id sc &>/dev/null
then
echo "sc已存在"
else
echo "sc不存在"
fi
2.2字符串判断:
[ -z STRING ] 如果STRING的长度为零则返回为真,即空是真
[ -n STRING ] 如果STRING的长度非零则返回为真,即非空是真
[ STRING1 ] 如果字符串不为空则返回为真,与-n类似
[ STRING1 == STRING2 ] 如果两个字符串相同则返回为真
[ STRING1 != STRING2 ] 如果字符串不相同则返回为真
[ STRING1 < STRING2 ] 如果 “STRING1”字典排序在“STRING2”前面则返回为真。
[ STRING1 > STRING2 ] 如果 “STRING1”字典排序在“STRING2”后面则返回为真。
2.3 数值判断:
[ INT1 -eq INT2 ] INT1和INT2两数相等返回为真 ,=
[ INT1 -ne INT2 ] INT1和INT2两数不等返回为真 ,<>
[ INT1 -gt INT2 ] INT1大于INT2返回为真 ,>
[ INT1 -ge INT2 ] INT1大于等于INT2返回为真,>=
[ INT1 -lt INT2 ] INT1小于INT2返回为真 ,<
[ INT1 -le INT2 ] INT1小于等于INT2返回为真,<=
2.4 逻辑判断:
[ ! EXPR ] 逻辑非,如果 EXPR 是false则返回为真。
[ EXPR1 -a EXPR2 ] 逻辑与,如果 EXPR1 and EXPR2 全真则返回为真。
[ EXPR1 -o EXPR2 ] 逻辑或,如果 EXPR1 或者 EXPR2 为真则返回为真。
[ ] || [ ] 用OR来合并两个条件
[ ] && [ ] 用AND来合并两个条件
###### 3.整数类型的比较:
if [ 123 -gt 22 ]
then
echo "大于"
else
echo "小于"
fi
if (( 123 > 22 ))
then
echo "大于"
else
echo "小于"
fi
###### 4.小数运算:
[root@xiaoliu shell_test]# echo "3.2+6.2"|bc
9.4
[root@xiaoliu shell_test]# echo "6>3"|bc
1 1表示为真,0表示为假
[root@xiaoliu shell_test]# echo "6.7>3"|bc
1
[root@xiaoliu shell_test]# echo "6.7<3"|bc
0
###### 5.整数运算
5.1 第一种: $(( 表达式 ))
5.2 第二种: $[ 表达式 ]
5.3 第三种: expr 表达式
5.4 第四种: let
[root@xiaoliu ~]# a=$(( 3+2 ))
[root@xiaoliu ~]# echo $a
5
[root@xiaoliu ~]# let a=3+4
[root@xiaoliu ~]# echo $a
7
[root@xiaoliu ~]# echo $[ 30 + 40 ]
70
[root@xiaoliu ~]# a=20
[root@xiaoliu ~]# b=55
[root@xiaoliu ~]# echo $[ $a + $b ]
75
[root@xiaoliu ~]# expr $a+$b
20+55
[root@xiaoliu ~]# expr $a + $b
75
###### 6.一个[]和[[]]的区别:
[] 碰到空白会进行分词
[[]] 引号内的字符串不会进行分词
[root@xiaoliu shell_test]# name="sc tl"
[root@xiaoliu shell_test]# [ $name == "sc tl" ]
-bash: [: 参数太多
[root@xiaoliu shell_test]# [[ $name == "sc tl" ]]
##### 七、在centos里面同步时间
1.安装chrony软件
yum install -y chrony
2.重启整个服务
systemctl restart chronyd
3.设置开机自启动
systemctl enable chronyd
##### 八、case语句
###### 1、case语句的结构:
case语句:
case $变量 in
value1)
语句体
;;
value2)
语句体
;;
*)
语句体
;;
esac
###### 2、小练习
用case语句实现输入两个整数,选择对这两个整数进行加减乘除运算,输入p就退出
#!bin/bash
read -p “请输入第一个整数:” num1
read -p “请输入第二个整数:” num2
echo “1、加法 2、减法 3、乘法 4、除法”
while true
do
read -p “请输入你想要执行的操作(按q退出):” option
case $option in
1)
echo $((
n
u
m
1
+
num1+
num1+num2 ))
;;
2)
echo $((
n
u
m
1
−
num1-
num1−num2 ))
;;
3)
echo $(( KaTeX parse error: Undefined control sequence: \* at position 5: num1\̲*̲num2 ))
;;
4)
echo $((
n
u
m
1
/
num1/
num1/num2 ))
;;
q)
break
;;
esac
done
##### 九、shell里面的数组
###### 1、定义:使用圆括号,中间以空格作为分隔符
#定义一个数组
[root@mysql-binary shell_test]# a=(xx yy zz ff)
#直接用$a查看的是数组里面的第一个元素
[root@mysql-binary shell_test]# echo $a
xx
#查看数组里面所有的元素
[root@mysql-binary shell_test]# echo ${a[*]}
xx yy zz ff
[root@mysql-binary shell_test]# echo ${a[@]}
xx yy zz ff
#对数组进行切片时,不能用a,要用整个数组里的所有元素进行切片
[root@mysql-binary shell_test]# echo ${a:1:3}
x
[root@mysql-binary shell_test]# echo ${a[*]:1:3}
为了做好运维面试路上的助攻手,特整理了上百道 【运维技术栈面试题集锦】 ,让你面试不慌心不跳,高薪offer怀里抱!
这次整理的面试题,小到shell、MySQL,大到K8s等云原生技术栈,不仅适合运维新人入行面试需要,还适用于想提升进阶跳槽加薪的运维朋友。
本份面试集锦涵盖了
- 174 道运维工程师面试题
- 128道k8s面试题
- 108道shell脚本面试题
- 200道Linux面试题
- 51道docker面试题
- 35道Jenkis面试题
- 78道MongoDB面试题
- 17道ansible面试题
- 60道dubbo面试题
- 53道kafka面试
- 18道mysql面试题
- 40道nginx面试题
- 77道redis面试题
- 28道zookeeper
总计 1000+ 道面试题, 内容 又全含金量又高
- 174道运维工程师面试题
1、什么是运维?
2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?
3、现在给你三百台服务器,你怎么对他们进行管理?
4、简述raid0 raid1raid5二种工作模式的工作原理及特点
5、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?
6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?
7、Tomcat和Resin有什么区别,工作中你怎么选择?
8、什么是中间件?什么是jdk?
9、讲述一下Tomcat8005、8009、8080三个端口的含义?
10、什么叫CDN?
11、什么叫网站灰度发布?
12、简述DNS进行域名解析的过程?
13、RabbitMQ是什么东西?
14、讲一下Keepalived的工作原理?
15、讲述一下LVS三种模式的工作过程?
16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?
17、如何重置mysql root密码?
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
8、什么是中间件?什么是jdk?
9、讲述一下Tomcat8005、8009、8080三个端口的含义?
10、什么叫CDN?
11、什么叫网站灰度发布?
12、简述DNS进行域名解析的过程?
13、RabbitMQ是什么东西?
14、讲一下Keepalived的工作原理?
15、讲述一下LVS三种模式的工作过程?
16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?
17、如何重置mysql root密码?
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!