shell脚本中()、(())、[]、[[]]、{}(1)

为了做好运维面试路上的助攻手,特整理了上百道 【运维技术栈面试题集锦】 ,让你面试不慌心不跳,高薪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行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

//等同于cmd
[root@localhost ~]# vim test.sh
#!/bin/bash
pass=grep password ~/passwd|awk '{print $NF}'
echo $pass

passwd=$(grep password ~/passwd|awk ‘{print $NF}’)
echo $passwd
[root@localhost ~]# sh test.sh
793127948
793127948


数组赋值



[root@localhost ~]# vim test.sh
#!/bin/bash
#pass=grep password ~/passwd|awk '{print $NF}'
#echo $pass

#passwd=$(grep password ~/passwd|awk ‘{print $NF}’)
#echo $passwd

//现有如下数组
num=(a b c d)
echo ${#num[*]}
echo ${#num[@]}
echo ${num[1]}
echo ${num[0]}

[root@localhost ~]# sh test.sh
4
4
b
a


命令组



[root@localhost ~]# vim test.sh
#!/bin/bash

(ls ~;date)

//括号中的命令将会新开一个子shell顺序执行,括号中的变量不能够被脚本余下的部分使用。括号中多个命令之间用分号隔开,最后一个命令可以没有分号,各命令和括号之间不必有空格。
[root@localhost ~]# sh test.sh
anaconda-ks.cfg passwd test.sh
2022年 03月 02日 星期三 11:20:09 CST


## 2.两个小括号(())


用于算术运算,只支持整数类型的运算,不支持浮点型,双小括号中的变量可以不使用$符号前缀,括号内支持多个表达式用分号分开, 只要括号中的表达式符合C语言运算规则, 甚至是三目运算符,都可以使用双小括号。  
 最常用的是在for循环。



[root@localhost ~]# vim test1.sh
#!/bin/bash
for ((i=0;i<6;i++));do
echo “$i”
done

[root@localhost ~]# sh test1.sh
0
1
2
3
4
5

//重定义变量值
[root@localhost ~]# vim test1.sh
#!/bin/bash
((num++))
echo “$num”
[root@localhost ~]# sh test1.sh
9


## 3. 单中括号[]


一般进行算术比较,脚本中使用较多。比较的话==和!=只支持字符串比较,-eq,-gt,-lt > < 支持数字类型比较,但是中括号中可不能使用 && 这类的符号哦,若想使用就得使用双中括号[[]]。在使用单中括号的时候,注意两边的空格。


## 4.双中括号[[]]


[[ ]] 多用来进行字符串比较, 比如两个字符串是否相同, [[ $var1 == $var2 ]]  
 bash把双中括号中的表达式看作一个单独的元素,并返回一个退出状态码。使用[[ … ]]条件判断结构,而不是[ … ],能够防止脚本中的许多逻辑错误。比如,&&、||、<和> 操作符能够正常存在于[[ ]]条件判断结构中,但是如果出现在[ ]结构中的话,可能会报错。



[root@localhost ~]# vim test1.sh
#!/bin/bash
if [ uname == “Linux” && whoami == “root” ];then
echo “3”
else
echo “4”
fi
[root@localhost ~]# sh test1.sh
test1.sh: 第 2 行:[: 缺少 `]’ //这里会报错说少中括号
4
[root@localhost ~]# vim test1.sh
#!/bin/bash
if [[ `uname` == “Linux” && `whoami` == “root” ]];then
echo “3”
else
echo “4”
fi

[root@localhost ~]# sh test1.sh
3


## 5.大括号{}


对大括号中的内容进行扩展。大括号中,不允许有空白,除非这个空白被引用或转义。



[root@localhost ~]# echo {1…5}
1 2 3 4 5


## 6. ||逻辑或


语法:`command1 || command2`  
 左边的命令返回为假才会执行右边的命令,只要有一个返回为真,后面的命令都不会被执行。



[root@localhost ~]# vim test1.sh
#!/bin/bash
a=88

if [ $a -gt 100 ] || [ $a -gt 90 ] || [ $a -gt 80 ];then
echo “0”
else
echo “1”

最全的Linux教程,Linux从入门到精通

======================

  1. linux从入门到精通(第2版)

  2. Linux系统移植

  3. Linux驱动开发入门与实战

  4. LINUX 系统移植 第2版

  5. Linux开源网络全栈详解 从DPDK到OpenFlow

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

第一份《Linux从入门到精通》466页

====================

内容简介

====

本书是获得了很多读者好评的Linux经典畅销书**《Linux从入门到精通》的第2版**。本书第1版出版后曾经多次印刷,并被51CTO读书频道评为“最受读者喜爱的原创IT技术图书奖”。本书第﹖版以最新的Ubuntu 12.04为版本,循序渐进地向读者介绍了Linux 的基础应用、系统管理、网络应用、娱乐和办公、程序开发、服务器配置、系统安全等。本书附带1张光盘,内容为本书配套多媒体教学视频。另外,本书还为读者提供了大量的Linux学习资料和Ubuntu安装镜像文件,供读者免费下载。

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

本书适合广大Linux初中级用户、开源软件爱好者和大专院校的学生阅读,同时也非常适合准备从事Linux平台开发的各类人员。

需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论

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

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

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

inux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论

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

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

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

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Shell脚本,要实现变量的自加1,可以使用以下方法的任意一种: 1. 使用自增运算符++:可以在变量名后面添加++来实现自加1,例如:`num++`。这将使变量num的值增加1。 2. 使用赋值运算符+=:可以使用赋值运算符+=将变量与1相加来实现自加1,例如:`num+=1`。这将使变量num的值增加1。 以上两种方法都是在当前同一个Shell执行的,并且变量的变化可以在脚本进行获取和使用。 如果你在调用一个新的脚本时想要实现自加1,可以使用fork调用方式。在当前脚本使用`path/to/foo.sh`来调用foo.sh脚本,例如:`./foo.sh`。这将创建一个新的子Shell来执行foo.sh脚本,子Shell执行完毕后返回到父Shell。在子Shell使用上述自加1的方法来实现自加1操作。 另外,如果你使用exec调用一个新脚本,需要注意的是,在exec行之后的内容将不再执行。所以在父脚本使用exec调用一个新脚本时,需要确保自加1的操作在exec行之前完成。 综上所述,在Shell脚本,可以通过自增运算符++或赋值运算符+=来实现变量的自加1,同时可以根据不同的调用方式来选择合适的方法进行操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [在 Shell 脚本调用另一个 Shell 脚本的三种方式](https://blog.csdn.net/zollty/article/details/122263576)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值