必会的 24 道 Shell 脚本面试题

Shell 脚本面试题大全 参考答案: **#!/bin/bash。这被称为 Shebang 或 Hashbang。**它指定了用来执行该脚本的解释器路径,确保脚本使用正确的解释器运行,而不是依赖于用户的默认 Shell。参考答案:单引号内的所有字符都会原样输出,不会解析变量和转义字符。双引号会解析变量 ($variable) 和转义字符 (\n, \t 等)。反向单引号会解析执行其中的命令和变量,并把输出结果替换到字符串中。旧语法的命令替换(推荐用 $(…))。 阅读详情
AI摘要

该博客围绕shell脚本展开,解答了诸多常见问题,如if语法嵌套、$?标记用途、数字和字符串比较、循环语法、脚本调试等,还介绍了使脚本可执行、写入注释、获取终端输入等操作方法,为shell脚本学习提供了实用参考。

&> (如# ls /usr/share/doc &> out.txt )

Q:5 shell 脚本中 “if” 语法如何嵌套?

答:基础语法如下:

if [ 条件 ]
then
命令1
命令2
……
else
if [ 条件 ]
then
命令1
命令2
….
else
命令1
命令2
……
fi
fi

Q:6 shell 脚本中 “$?” 标记的用途是什么?

答:在写一个 shell 脚本时,如果你想要检查前一命令是否执行成功,在 if 条件中使用 “$?” 可以来检查前一命令的结束状态。

简单的例子如下:

root@localhost:~# ls /usr/bin/shar
/usr/bin/shar
root@localhost:~# echo $?
0

如果结束状态是 0,说明前一个命令执行成功。

root@localhost:~# ls /usr/bin/share
ls: cannot access /usr/bin/share: No such file or directory
root@localhost:~# echo $?
2

如果结束状态不是 0,说明命令执行失败。

Q:7 在 shell 脚本中如何比较两个数字 ?

答:在 if-then 中使用测试命令( -gt 等)来比较两个数字,例子如下:

#!/bin/bash
x=10
y=20
if [ x −gt x -gt x −gt y ]
then
echo “x is greater than y”
else
echo “y is greater than x”
fi

Q:8 shell 脚本中 break 命令的作用 ?

答:break 命令一个简单的用途是退出执行中的循环。我们可以在 while 和 until 循环中使用 break 命令跳出循环。

Q:9 shell 脚本中 continue 命令的作用 ?

答:continue 命令不同于 break 命令,它只跳出当前循环的迭代,而不是整个循环。continue 命令很多时候是很有用的,例如错误发生,但我们依然希望继续执行大循环的时候。

Q:10 告诉我 shell 脚本中 Case 语句的语法 ?

答:基础语法如下:

case 变量 in
值1)
命令1
命令2
……
最后命令
!!
值2)
命令1
命令2
……
最后命令
;;
esac

Q:11 shell 脚本中 while 循环语法 ?

答:如同 for 循环,while 循环只要条件成立就重复它的命令块。不同于 for 循环,while 循环会不断迭代,直到它的条件不为真。

基础语法:

while [ 条件 ]
do
命令…
done

Q:12 如何使脚本可执行 ?

答:使用 chmod 命令来使脚本可执行。例子如下:

chmod a+x myscript.sh

Q:13 “#!/bin/bash” 的作用 ?

答:#!/bin/bash 是 shell 脚本的第一行,称为释伴(shebang)行。这里#符号叫做 hash,而! 叫做 bang。它的意思是命令通过 /bin/bash 来执行。

Q:14 shell 脚本中 for 循环语法 ?

答:for 循环的基础语法:

for 变量 in 循环列表
do
命令1
命令2
….
最后命令
done

Q:15 如何调试 shell 脚本 ?

答:使用 ‘-x’ 参数(sh -x myscript.sh)可以调试 shell 脚本。另一个种方法是使用 ‘-nv’ 参数( sh -nv myscript.sh)。

Q:16 shell 脚本如何比较字符串?

答:test 命令可以用来比较字符串。测试命令会通过比较字符串中的每一个字符来比较。

Q:17 Bourne shell(bash) 中有哪些特殊的变量 ?

答:下面的表列出了 Bourne shell 为命令行设置的特殊变量。

内建变量    解释
$0    命令行中的脚本名字
$1    第一个命令行参数
$2    第二个命令行参数
……    …….
$9    第九个命令行参数
$#    命令行参数的数量
$*    所有命令行参数,以空格隔开

Q:18 在 shell 脚本中,如何测试文件 ?

答:test 命令可以用来测试文件。

基础用法如下表格:

Test         用法
-d 文件名    如果文件存在并且是目录,返回true
-e 文件名    如果文件存在,返回true
-f 文件名    如果文件存在并且是普通文件,返回true
-r 文件名    如果文件存在并可读,返回true
-s 文件名    如果文件存在并且不为空,返回true
-w 文件名    如果文件存在并可写,返回true
-x 文件名    如果文件存在并可执行,返回true

Q:19 在 shell 脚本中,如何写入注释 ?

答:注释可以用来描述一个脚本可以做什么和它是如何工作的。每一行注释以 # 开头。

例子如下:

#!/bin/bash

This is a command

echo “I am logged in as $USER”

Q:20 如何让 shell 就脚本得到来自终端的输入?

答:read 命令可以读取来自终端(使用键盘)的数据。read 命令得到用户的输入并置于你给出的变量中。

例子如下:

vi /tmp/test.sh

#!/bin/bash
echo ‘Please enter your name’
read name
echo “My Name is $name”

./test.sh

Please enter your name
LinuxTechi
My Name is LinuxTechi

Q:21 如何取消变量或取消变量赋值 ?

答:“unset” 命令用于取消变量或取消变量赋值。

语法如下所示:

# unset <变量名>

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

img
img

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
加入社区》https://bbs.youkuaiyun.com/forums/4304bb5a486d4c3ab8389e65ecb71ac0

./test.sh

Please enter your name
LinuxTechi
My Name is LinuxTechi

Q:21 如何取消变量或取消变量赋值 ?

答:“unset” 命令用于取消变量或取消变量赋值。

语法如下所示:

# unset <变量名>

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

[外链图片转存中…(img-8A3AW1O9-1725801968949)]
[外链图片转存中…(img-lvb14lOL-1725801968951)]

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
加入社区》https://bbs.youkuaiyun.com/forums/4304bb5a486d4c3ab8389e65ecb71ac0

Shell面试题 1.在 shell 脚本成功执行前,如何中断脚本执行? 解答:我们需要使用exit命令来实现以上描述的情境。exit命令被强制输出非0值时,脚本会报错并退出。在 Unix 环境下的 shell 脚本中,0值表示成功执行。因此,在脚本终止前执行一个不带引号的exit -1命令将使脚本中止。 #!/bin/bash echo "Hello" exit-1 echo "bye" 保存文件并执行。 # sh linuxmi.sh Hello linuxmi.sh:行3: exit-1: 未找到命令 bye 从 阅读详情

相关推荐

5个实用的shell脚本面试题和答案

这边提到的5个面试问题,延续之前的有关Linux面试问题和答案。如果你是Tecmint的读者,你的支持我非常感谢。 1. 写一个shell脚本来得到当前的日期,时间,用户名和当前工作目录。 答案 : 输出用户名,当前日期和时间,以及当前工作目录的命令就是logname,date,who i am和pwd。 现在,创建一个名为userstats.sh文件,将下面的代码添加到它。 代码如下: #!/bin/bash echo “Hello, $LOGNAME” echo “Current date is `date`” echo “User is `who i am`” echo “Cu

关于 Shell 脚本的经典十三问

来源:https://www.cnblogs.com/rustling/p/9833174.html1、为何叫做 Shell?我们知道计算机的运作离不开硬件,但却无法直接操作硬件,硬件的驱...

关注微信公众号【开源Linux】,后台回复『10T』,领取10T学习资源大放送,涵盖Linux、虚拟化、容器、云计算、网络、Python、Go等书籍和视频 863

中国IP发展之面面观

谢学军/邱善勤2006-1-25 9:29:28电子经理世界       IP远没有我们当初想象的那么简单   当SoC设计方法学刚刚传到国内的时候,学界为之欢呼雀跃,由于IP/SoC设计技术的使用,可以将发达国家用几年甚至十几年积累起来的设计技术直接为我所用,使中国的集成电路跳过漫长的积累阶段,迅速站到较高的起点上。因此在当时看来,IP/SoC设计技术是我国提升设计水平、发展

klxdmm305的专栏 1188

70 个 Shell 脚本面试问题和答案

我们为您的面试准备选择了预期的 70 个 shell 脚本问题和答案。对于所有系统管理员来说,了解脚本或至少基础知识真的很重要,这反过来有助于在您的工作环境中自动执行许多任务。在过去的几年里,我们已经看到所有的 linux 工作规范都需要脚本技能。 1)如何将参数传递给脚本? ./脚本参数 示例:脚本将显示文件名 ./show.sh file1.txt cat show.sh #!/bin/bash cat $1 2)如何在脚本中使用参数? 第一个参数:$1,第二个参数:$2 示例:脚本

太极淘的博客 1万+

【5G全网建设】Option3X和Option2模式建安市、兴城市和四水市核心网、承载网网络设计与部署

拓扑规划: Option 3X网络拓扑图规划 Option 2网络拓扑图规划 设备部署: 建安市核心网 建安市承载中心机房 建安市骨干汇聚机房 建安市3区汇聚机房 建安市C站点无线机房 兴城市核心网 兴城市承载中心机房 兴城市骨干汇聚机房 兴城市2区汇聚机房 兴城市B站点无线机房 数据配置: 建安市核心网 建安市承载中心机房 建安市骨干汇聚机房 建安市3区汇聚机房 建安市C站点无线机房 兴城市核心网 兴城市承载中心机房 兴城市骨干汇聚机房 兴城市2区汇聚机房 兴城市B站点无线机房 业务调试

weixin_67183034的博客 8858

Enterprise Architect 中文经典教程

本文使用到的EA工程文件下载 一、Enterprise Architect简介 Enterprise Architect是一个对于软件系统开发有着极好支持的CASE软件(Computer Aided Software Engineering)。EA不同于普通的UML画图工具(如VISIO),它将支撑系统开发的全过程。在需求分析阶段,系统分析与设计阶段,系统开发及部署等方面有着强大的支持,...

2万+

24 道必知必会的 Shell 脚本面试题

虽然现在Python在运维工作中已经使用很普遍,但是很多企业在找Linux云计算工程师的时候还是会问到 shell 脚本的问题,它有助于你在工作环境中自动完成很多任务 如下是一些面试过程中,经常会遇到的 shell 脚本面试问题及解答: Q:1 Shell脚本是什么、它是必需的吗? 答:一个Shell脚本是一个文本文件,包含一个或多个命令。作为系统管理员,我们经常需要使用多个命令来完成一项任务,我们可以添加这些所有命令在一个文本文件(Shell脚本)来完成这些日常工作任务。 Q:2 什么是默认登录s

m0_57468722的博客 3669

基于DFT的mbist sdc模板(DFT)

摘要:本文详细介绍了DFT测试模式下的SDC约束方法。

murphyrong的博客 921

算法工程师的修养 | 必会的24道Shell脚本面试题

原文:linuxtechi译文:LCTT链接:http://linux.cn/article-5311-1.html虽然现在Python在运维工作中已经使用很普遍,但是很多企业在找Li...

idol24的博客 930

2.设置Salesforce开发环境

Salesforce DX:salesforce Developer Experience (salesforce开发人员体验)LWC:Lightning Web Component(注意首字母是大写的,是一个概念,小写的话有组件本身的含义)CLI:Command Line Interface(命令行界面)version control system (VCS):版本控制系统。

nihaixiao的博客 2198

软考备考:《系统规划与管理师教程》(第2版)第2章——数字ZG与数智化发展

🔴数字化转型的定义:数字化转型是建立在数字化转换、数字化升级基础上,进一步触及组织核心业务,以新建一种业务模式为目标的高层次转型。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 960

-vx shell_必会的 24 道 Shell 脚本面试题

传智播客博学谷加小谷vx:boxueguu免费领IT各学科资料、课程Get更多干货直播课虽然现在Python在运维工作中已经使用很普遍,但是很多企业在找Linux云计算工程师的时候还是会问到shell 脚本的问题,它有助于你在工作环境中自动完成很多任务。如下是一些面试过程中,经常会遇到的 shell 脚本面试问题及解答:Q:1 Shell脚本是什么、它是必需的吗?答:一个Shell脚本...

weixin_35854667的博客 194

2026年GESP3月认证C++五级真题解析

因为要合并成升序数组,所以当A[i]小于等于B[j]时,取A[i],否则取B[j]。当a[i]>a[j]时,左边数组中从i到m的所有元素都大于a[j],因此逆序对数量增加m-i+1。给定一个包含n个互不相同的正整数的数组A与一个包含m个互不相同的正整数的数组B,请你帮忙计算有多少个数在数组A与数组B中均出现。下面代码实现两个整数除法,其中被除数为一个“大整数”,用字符串表示,除数是一个小整数,用int表示,则横线处应该填写()。且a[i] > a[j],则a[i]和a[j]是一个逆序对。

lan_in的博客 118

必会的 24 道 Shell 脚本面试题,2024年最新成功跳槽阿里

答:函数是拥有名字的代码块。当我们定义代码块,我们就可以在我们的脚本调用函数名字,该块就会被执行。示例如下所示:译注:下面是我给的shell函数语法,原文没有[ function ] 函数名 [()]命令;

m0_60229361的博客 1934

论文复现《基于最大李雅普诺夫指数的电力系统暂态电压稳定评估方案》

电力系统暂态电压稳定评估方案 摘要 本研究提出了一种基于最大李雅普诺夫指数的电力系统暂态电压稳定评估方法。通过分析相空间中相邻轨迹的收敛或发散特性,该方法能够提前判别系统稳定性。论文首先阐述了暂态电压稳定机理,详细介绍了最大李雅普诺夫指数的计算方法。针对IEEE-39节点系统,建立了仿真模型并获取不同故障场景下的数据。研究开发了完整的评估程序,包括数据预处理、相空间重构、指数计算等模块,并通过与时域仿真结果的对比验证了方法的准确性。实验结果表明,该方法能够快速有效地评估电力系统的暂态电压稳定性,为系统安全运

max500600的博客 187

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Linux最全必会的 24 道 Shell 脚本面试题(1),2024年最新Linux运维开发教程入门

答:函数是拥有名字的代码块。当我们定义代码块,我们就可以在我们的脚本调用函数名字,该块就会被执行。示例如下所示:译注:下面是我给的shell函数语法,原文没有[ function ] 函数名 [()]命令;本文完。

2401_83974607的博客 1177

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

运维必会 24 道 shell 脚本

虽然现在Python在运维工作中已经使用很普遍,但是很多企业在找Linux云计算工程师的时候还是会问到shell 脚本的问题,它有助于你在工作环境中自动完成很多任务。 如下是一些面试过程中,经常会遇到的 shell 脚本面试问题及解答: 1 Shell脚本是什么、它是必需的吗? 答:一个Shell脚本是一个文本文件,包含一个或多个命令。作为系统管理员,我们经常需要使用多个...

weixin_44316575的博客 2231

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

精心汇总的 24 道 shell 脚本面试题

Linux编程点击右侧关注,免费入门到精通!作者丨linuxtechihttp://linux.cn/article-5311-1.html虽然现在Python在运维工作...

<sdffdsfsdfdfs>sfsfsfsdfsdffds</sdfsDS>Fsd 1974

linux必会的30道shell编程面试题及讲解

合格linux运维人员必会的30道shell编程面试题及讲解 1.通过ansibe批量给主机修改名称 #!/bin/bash cat /etc/Hostname|\ while read line do Host_IP="$(echo $line| awk '{print $1}')" Host_name="$(echo $line| awk '{print $2}')" ansible ...

weixin_43876317的博客 5113

24 道 shell 脚本面试题

虽然现在Python在运维工作中已经使用很普遍,但是很多企业在找Linux云计算工程师的时候还是会问到shell 脚本的问题,它有助于你在工作环境中自动完成很多任务。 如下是一些面试过程中,经常会遇到的 shell 脚本面试问题及解答: Q:1 Shell脚本是什么、它是必需的吗? 答:一个Shell脚本是一个文本文件,包含一个或多个命令。作为系统管理员,我们经常需要使用多个命令来完成一项...

HelloWorld搬运工 1271

linux脚本命令考试题,精心汇总的 24 道 shell 脚本面试题

原标题:精心汇总的 24 道 shell 脚本面试题虽然现在Python在运维工作中已经使用很普遍,但是很多企业在找Linux云计算工程师的时候还是会问到shell 脚本的问题,它有助于你在工作环境中自动完成很多任务。如下是一些面试过程中,经常会遇到的 shell 脚本面试问题及解答:Q:1 Shell脚本是什么、它是必需的吗?答:一个Shell脚本是一个文本文件,包含一个或多个命令。作为系统管理...

weixin_39639381的博客 416

经常会遇到的24 道 Shell 脚本面试题,你会了吗?

虽然现在Python在运维工作中已经使用很普遍,但是很多企业在找Linux云计算工程师的时候还是会问到 shell 脚本的问题,它有助于你在工作环境中自动完成很多任务。 如下是一些面试过程中,经常会遇到的 shell 脚本面试问题及解答: Q:1 Shell脚本是什么、它是必需的吗? 答:一个Shell脚本是一个文本文件,包含一个或多个命令。作为系统管理员,我们经常需要使用多个命令来完成一项任务,我们可以添加这些所有命令在一个文本文件(Shell脚本)来完成这些日常工作任务。 Q:2 什么是默认

m0_65462541的博客 513
上一篇: 【面试精品】关于面试会遇到的Apache相关的面试题_apache面试常见问题
下一篇: 2021 最新 webpack 面试题
普通网友
博客等级 码龄5年 3419粉丝 477原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值