2024年Linux最新Shell编程语法_shell语法(1),2024年最新2024最新Linux运维知识体系总结

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事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- num1num2 ))
;;
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行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 20
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值