总结
总的来说,面试是有套路的,一面基础,二面架构,三面个人。
最后,小编这里收集整理了一些资料,其中包括面试题(含答案)、书籍、视频等。希望也能帮助想进大厂的朋友
=====================================================================
**1、if语句实例
shell里,(())表示比较大小
if 语法格式为:
if 表达式;then
表达式
else
表达式
fi**
if语句判断数字大小:
[root@docker1 ~]# cat c.sh
#! /bin/bash
NUM1=100
NUM2=200
if (($NUM1 > $NUM2));then
echo “This $NUM1 great $NUM2”
else
echo “This $NUM1 little $NUM2”
fi
[root@docker1 ~]# sh c.sh
This 100 little 200
- 逻辑运算符:
-f 判断文件是否存在
-d 判断目录是否存在
-eq 等于
-ne 不等
-lt 小于
-gt 大于
-le 小于等于
-ge 大于等于
-a 双方都成立,逻辑表达式
-o 单方成立
-z 空字符串
实例: 1)判断一个目录是否存在 [root@docker1 ~]# cat d.sh
#! /bin/bash
判断文件是否存在
DIR=/data/20200522
if [ ! -d /data/$DIR ]; then
mkdir -p /data/$DIR
echo -e “\033[32mThis $DIR is create success!\033[0m”
else
echo -e “\033[32mThis $DIR is already exist,Please exit.\033[0m”
fi
[root@docker1 ~]# sh d.sh
This /data/20200522 is already exist,Please exit.
2)判断一个文件是否存在
[root@docker1 shell]# cat a.sh
#! /bin/bash
FILE=/tmp/20200222.txt
if [ ! -f $FILE ];then
echo “OK” >> $FILE
else
cat $FILE
fi
[root@docker1 shell]# sh a.sh
[root@docker1 shell]# sh a.sh
OK
3)多个条件测试判断
[root@docker1 shell]# cat b.sh
#!/bin/bash
score=$1
if [ -z $1 ];then
echo “Please input your score{80|90|100}”
exit
fi
if [ $score -gt 85 ];then
echo “best”
elif [ $score -gt 75 ];then
echo “good”
elif [ $score -gt 60 ];then
echo “pass”
else
echo “no pass”
fi
[root@docker1 shell]# sh b.sh
Please input your score{80|90|100}
[root@docker1 shell]# sh b.sh 60
no pass
[root@docker1 shell]# sh b.sh 100
best
https://blog.csdn.net/qq_45714272/article/details/106296310
https://blog.csdn.net/qq_45714272/article/details/106299071
=====================================================================
1、打印1到15的和利用for循环
[root@a ~]# cat a.sh
#! /bin/bash
for i in seq 15
do
echo “the number is $i”
done
2、查看脚本运行过程
[root@a ~]# sh -x b.sh
3、打印1到100的和
[root@a ~]# cat b.sh
#! /bin/bash
j=0
for ((i=1;i<=100;i++))
do
j=expr $i + $j
done
echo $j
For循环企业实例
1、打印当前目录所有sh结尾的文件并打包
[root@a ~]# cat c.sh
#! /bin/bash
for i in find . -maxdepth 1 -name "*.sh"
do
tar -czvf $i.tgz $i
done
[root@a ~]# ls
anaconda-ks.cfg a.sh a.sh.tgz b.sh b.sh.tgz c.sh c.sh.tgz
解压:
[root@a ~]# cat c.sh
#! /bin/bash
for i in find . -maxdepth 1 -name "*.sh"
do
tar -czvf $i.tgz $i
done
[root@a ~]# sh c.sh
./a.sh
./b.sh
./c.sh
[root@a ~]# cd /tmp/test/
[root@a test]# ls
a.sh b.sh c.sh
5、远程主机批量传输文件
传输单个文件
[root@a test]# cat auto_scp
#! /bin/bash
auto scp files for client
by 20200524 caq
for i in echo 175.24.20.189
do
scp -r /tmp/test root@$i:/root
done
[root@a test]# sh auto_scp
root@175.24.20.189’s password:
a.sh 100% 64 1.2KB/s 00:00
b.sh 100% 76 1.4KB/s 00:00
c.sh 100% 89 1.6KB/s 00:00
auto_scp 100% 131 2.4KB/s 00:00
传输多个文件
[root@a test]# cat auto_scp
#! /bin/bash
auto scp files for client
by 20200524 caq
FILES=$*
if [ -z $* ];then
echo “input your patameter!{files|dir|…}”
exit
fi
for i in echo 175.24.20.189
do
scp -r F I L E S r o o t @ FILES root@ FILESroot@i:/root/
done
[root@a test]# sh auto_scp /a1 /a2
root@175.24.20.189’s password:
[root@VM_0_12_centos ~]# ls
a1 a2 test
免密登录
[root@a test]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:l+BheWrW/7HYGue2TlkGWTPW+bstC19H1SIOAgAmJEM root@a
The key’s randomart image is:
±–[RSA 2048]----+
|*Eo… ++|
|.+ . . .+=|
| * o . + +|
| o B + . oo|
| S + . =|
| o . . * |
| + = =|
| @o=o|
| o+X+ |
±—[SHA256]-----+
[root@a .ssh]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@175.24.20.189
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: “/root/.ssh/id_rsa.pub”
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed – if you are prompted now it is to install the new keys
root@175.24.20.189’s password:
Number of key(s) added: 1
Now try logging into the machine, with: “ssh ‘root@175.24.20.189’”
and check to make sure that only the key(s) you wanted were added.
[root@a .ssh]# ssh 175.24.20.189
Last login: Sun May 24 21:43:32 2020 from 123.162.210.87
While循环企业实例:
IP等信息在一个文件中进行批量传输:
[root@a shell]# cat c.sh
#! /bin/bash
#by 20200524
while read line
do
ip=echo $line |awk '{print $2}'
echo “scp -r /tmp/text.txt root@$ip:/tmp”
done < list.txt
列表信息为:
[root@a shell]# cat list.txt
1 192.168.1.1
2 192.168.1.2
3 192.168.1.3
4 192.168.1.4
实现打印文件内容中的部分内容,并进行操作
[root@a shell]# sh c.sh
scp -r /tmp/text.txt root@192.168.1.1:/tmp
scp -r /tmp/text.txt root@192.168.1.2:/tmp
scp -r /tmp/text.txt root@192.168.1.3:/tmp
scp -r /tmp/text.txt root@192.168.1.4:/tmp
Until循环
这个循环语句用的较少
还是通过一个实例来理解它吧!
[root@a shell]# cat f.sh
#! /bin/bash
a=10
until [[ a -lt 0 ]]
do
echo “$a”
((a–))
done
[root@a shell]# sh f.sh
10
9
8
7
6
5
4
3
2
1
0
=====================================================================
1、case语句简单实例
case语句用来判断,下面这个实例打印了一个菜单列表
语法格式为:
case variable in
option )
cmd
;;
option )
cmd
;;
… )
cmd
;;
- )
cmd
;;
esac
[root@a shell]# cat e.sh
#/bin/bash
case $1 in
apache )
echo “wait install apache server!”
;;
mysql )
echo “wait install mysql server!”
;;
php )
echo “wait install php server!”
;;
- )
echo “input your install server name please!”
;;
esac
[root@a shell]# sh e.sh
input your install server name please!
[root@a shell]# sh e.sh mysql
wait install mysql server!
2、select选择语句和case语句结合使用
select一般用于选择菜单的创建,可以配合ps3来做菜单的打印输出信息。
[root@a shell]# cat e.sh
#/bin/bash
ps3=“select your menu:”
select i in “apache” “mysql” “php”
do
case $i in
apache )
echo “wait install apache server!”
;;
mysql )
echo “wait install mysql server!”
;;
php )
echo “wait install php server!”
;;
- )
echo “input your install server name please!”
;;
esac
done
[root@a shell]# sh e.sh
-
apache
-
mysql
-
php
#? 1
wait install apache server!
#? 2
wait install mysql server!
#? 3
wait install php server!
====================================================================
grep 多用作匹配
sed多用于修改
awk多用于打印特定位置字符
sed命令可以实现不打开文件的情况下对文件内容进行修改
sed的替换命令格式:s/A/B/g 或者知 s#A#B#g 或者 s_A_B_g#。
s 是替代命令. s/表达式/replacement/
空白用t替代。
g(GLOBAL)
g – 全部替代
总结
我们总是喜欢瞻仰大厂的大神们,但实际上大神也不过凡人,与菜鸟程序员相比,也就多花了几分心思,如果你再不努力,差距也只会越来越大。实际上,作为程序员,丰富自己的知识储备,提升自己的知识深度和广度是很有必要的。
Mybatis源码解析
t install mysql server!
#? 3
wait install php server!
====================================================================
grep 多用作匹配
sed多用于修改
awk多用于打印特定位置字符
sed命令可以实现不打开文件的情况下对文件内容进行修改
sed的替换命令格式:s/A/B/g 或者知 s#A#B#g 或者 s_A_B_g#。
s 是替代命令. s/表达式/replacement/
空白用t替代。
g(GLOBAL)
g – 全部替代
总结
我们总是喜欢瞻仰大厂的大神们,但实际上大神也不过凡人,与菜鸟程序员相比,也就多花了几分心思,如果你再不努力,差距也只会越来越大。实际上,作为程序员,丰富自己的知识储备,提升自己的知识深度和广度是很有必要的。
Mybatis源码解析
[外链图片转存中…(img-FLoUvvJY-1715432461964)]
[外链图片转存中…(img-dtCfEkxm-1715432461965)]