Shell 脚本面试指南

包含 20 多个中级到高级 Linux shell 脚本面试问题的主题,并附有示例和答案:

1、问题:shell 脚本开头的  “#!” 的用途是什么?举个例子。
答案:是shebang 指定脚本的解释器。
示例:#!/bin/bash 表示脚本正在使用 Bash shell。

2、问题:如何向 shell 脚本传递参数?请举例说明。
答:可以:使用 $1, $2 等作为位置参数。

3、问题:解释 shell 脚本中单引号和双引号的区别。
答:单引号保留字面值,而双引号允许变量扩展:
例如:echo 'Hello $USER' 与 echo "Hello $USER"。

4、问题:什么是命令替换,如何在脚本中使用?请举例说明。
答:命令替换:命令替换允许嵌入命令输出。
例如:current_date=$(date)。 

5、问题:如何在 shell 脚本中检查文件是否存在?请写一个有条件的示例。
答:使用 if [ -e "$filename" ]; then ... fi。

6、问题:解释 shell 脚本中的 $?
答:$? 表示最后一条命令的退出状态。0 表示成功,非 0 表示错误。

7、问题:shell 脚本中的 here 文档是什么?举例说明。
答:here 文档用于多行输入。举例说明: 

cat <<EOF
this is text
EOF

8、问题:如何在 Bash 中使用 for 循环遍历目录中的文件?请举例说明。
答:举例说明: 

for file in /path/to/dir_/*l do
echo "$file"
done
_

9、问题:什么是 Bash 中的进程替换?请举例说明。
答:进程替换:进程替换允许将命令的输出视为文件。
例如:diff <(command1) <(command2).

10、问题:如何在一条命令中将 stdout 和 stderr 重定向到一个文件?
答:使用命令 &> output.log。 

11、问题:解释 shell 脚本中 set -e 选项的作用。
答:set -e 使脚本在任何命令返回非零状态时退出

12、问题:什么是 shell 脚本中的管道?请举例说明。
答:管道管道将一个命令的 stdout 连接到另一个命令的 stdin。
例如:cat file.txt | grep "pattern"。 

13、 问题:如何在 shell 脚本中创建和使用函数?请说明函数的定义和用法。
回答:示例: 

my_function(){
echo "Hello, %1!"
}
my_function "Alice"

14、问题:什么是 shell 脚本中的进程分叉?请举例说明。
答:进程分叉就是创建新进程:进程分叉就是创建新进程。
例如:forked_process &. 

15、问题:解释 shell 脚本条件语句中 == 和 = 的区别。
答: == 用于字符串比较,而 = 用于变量赋值。 

16、问题:如何在 shell 脚本中捕获信号?请举例说明。
回答:示例:trap SIGINT (Ctrl+C): 
trap 'echo "Ctrl+C pressed"' INT

17、问题:Bash 中的关联数组是什么,如何使用?举例说明。
答:关联数组关联数组允许键值对。举例说明: 

declare -A fruits
fruits["apple"]="red"
echo "Color of apple: ${fruits["apple"]}"

18、问题:如何检查 shell 脚本中的变量是否为空?
答:使用 if [ -z "$var" ]; then ... fi。 

19、问题:shell 脚本中的 read 命令有什么作用?请举例说明。
答:read 用于读取用户输入。 

20、问题:解释条件语句中 && 和 || 的区别。
答:如果左命令成功,&& 执行右命令。|| 表示如果左侧命令失败,则执行右侧命令。

原文:https://www.jdon.com/68957.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/101680.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

16+sci,多重免疫组织化学+CIBERSORTx 鉴定成纤维细胞亚群。

今天给同学们分享一篇单细胞多重免疫组织化学数字细胞学&#xff08;CIBERSORTx&#xff09;的生信文章“Single-cell analysis reveals prognostic fibroblast subpopulations linked to molecular and immunological subtypes of lung cancer”&#xff0c;这篇文章于2023年1…

springboot就业信息管理系统springboot32

大家好✌&#xff01;我是CZ淡陌。一名专注以理论为基础实战为主的技术博主&#xff0c;将再这里为大家分享优质的实战项目&#xff0c;本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#xff0c;希望你能有所收获&#xff0c;少走一些弯路…

nodejs+vue宠物店管理系统

例如&#xff1a;如何在工作琐碎,记录繁多的情况下将宠物店管理的当前情况反应给管理员决策,等等。在此情况下开发一款宠物店管理系统小程序&#xff0c; 困扰管理层的许多问题当中,宠物店管理也是不敢忽视的一块。但是管理好宠物店又面临很多麻烦需要解决,于是乎变得非常合乎时…

STM32使用ThreadX示例以及tx_thread_create解析

示例代码 以下是一些基本示例代码&#xff0c;用于STM32F4 Discovery板和ThreadX库。 #include "stm32f4xx.h" #include "tx_api.h"/* 定义任务堆栈大小 */ #define TASK_STACK_SIZE 1024/* 定义任务优先级 */ #define TASK_PRI 16/* 定义两个任务的ID *…

mysql报SQLSTATE[22007]的错误的一个原因

最近在修改一个程序&#xff0c;打算将$video这个参数保存到数据库。修改的过程中出现错误。导致该程序不能发布新文章。在程序的一个db.php程序文件里使用var_dump($input); 和var_dump($stmt); 语句看到里错误信息&#xff0c;并找到里错误原因。信息里包含的错误代码是&…

java如何初始化数组(如:int[]、byte[]等)

Java语言中数组必须先初始化&#xff0c;然后才可以使用。所谓初始化就是为数组的数组元素分配内存空间&#xff0c;并为每个数组元素附初始值。 注意&#xff1a;数组完成初始化后&#xff0c;内存空间中针对该数组的各个元素就有个一个默认值&#xff1a; 基本数据类型的整数…

conda: error: argument COMMAND: invalid choice: ‘activate‘

参考:https://github.com/conda/conda/issues/13022 输入后重启terminal即可

根据客户端设备更改 SAP GUI 布局

了解如何根据所使用的设备在客户端系统上显示图像。在这里&#xff0c;我们使用 _clientedition 系统变量来获取有关客户端系统的设备类型、平台类型和许可证类型的信息。我们将引导您完成以下步骤。 1.删除映像容器。 //删除屏幕上的图像容器 del("X[IMAGE_CONTAINER]&…

pytorch Nvidia 数据预处理加速

目录 安装 不支持Windows&#xff1a; 官方说明&#xff1a; 预处理加速&#xff1a; 学习笔记&#xff1a; 参考&#xff1a; 深度学习预处理工具---DALI详解_nvidia.dali.fn_扫地的小何尚的博客-CSDN博客 安装 不支持Windows&#xff1a; 官方说明&#xff1a; Insta…

【设计模式】使用建造者模式组装对象并加入自定义校验

文章目录 1.前言1.1.创建对象时的痛点 2.建造者模式2.1 被建造类准备2.2.建造者类实现2.3.构建对象测试2.4.使用lombok简化建造者2.5.lombok简化建造者的缺陷 3.总结 1.前言 在我刚入行不久的时候就听说过建造者模式这种设计模式&#xff0c;当时只知道是用来组装对象&#xf…

Vuex存值取值与异步请求处理

目录 前言 一、Vuex简介 1.Vuex是什么 2.Vuex的核心概念 3.使用Vuex的好处 4.Vuex执行流程 二、Vuex的使用步骤 1.安装Vuex 2.创建store模块&#xff0c;分别维护state/actions/mutations/getters 3.使用Vuex存储值&#xff0c;获取值和改变值 1.state.js---存值 2.…

关于Vuex的基础使用存值及异步

目录 一.概述 二.取值 2.1.安装 2.2.菜单栏 2.3.模块 2.4.引用 三.改值 四.异步&后台请求 好啦今天就到这里了希望能帮到你哦&#xff01;&#xff01;&#xff01; 一.概述 Vuex 是一个用于 Vue.js 应用程序的状态管理库。它主要用于集中管理应用程序中的共享状态&a…

idea中maven plugin提示not found

在终端中输入&#xff1a; mvn dependency:resolve 然后 解决了部分问题 Plugin org.apache.maven.plugins:maven-jar-plugin:3.1.0 not found 改为3.3.0了 Plugin maven-source-plugin:3.3.0 not found 改为 2.4 了 版本下降了 感觉后继有坑 待观察

Linux网络和系统管理

网络管理命令 1、ifconfig 命令 作用 ifconfig 命令用于显示或设置网络设备的信息。格式 ifconfig [网卡名字] [参数]可选项 网卡名字:指定要操作的网络设备。参数: up:启动指定网卡。down:关闭指定网卡。-a:显示所有网卡接口的信息,包括未激活的网卡接口。使用示例 1…

时代风口中的Web3.0基建平台,重新定义Web3.0!

近年来&#xff0c;Web3.0概念的广泛兴起&#xff0c;给加密行业带来了崭新的叙事方式&#xff0c;同时也为加密行业提供了更加具有想象力的应用场景与商业空间&#xff0c;并让越来越多的行业从业者们意识到只有更大众化的市场共性需求才能推动加密市场的持续繁荣。当前围绕这…

IDEA设置自动导入包

IDEA设置自动导入包 首先进入设置选项 之后勾选以下两项&#xff1a; 第一项&#xff1a;IntelliJ IDEA 将在我们书写代码的时候自动帮我们优化导入的包&#xff0c;比如自动去掉一些没有用到的包。 第二项&#xff1a; IntelliJ IDEA 将在我们书写代码的时候自动帮我们导入…

.NET ABP.Zero 项目疑似内存排查历程

当前项目是 .NET 5 EentityFrameworkCore&#xff0c;疑似内存泄漏&#xff0c;之所以说是疑似是因为到目前位置还没有能准确的定位到问题。当前这个框架从 .NET Core 2.1 就开始用&#xff0c;期间有升级到 3.1、5.0、6.0&#xff0c;在排查过程中还把 5.0 分支升级到了 7.0 。…

HashMap -- 调研

HashMap 调研 前言JDK1.8之前拉链法: JDK1.8之后JDK1.7 VS JDK1.8 比较优化了一下问题: HashMap的put方法的具体流程?HashMap的扩容resize操作怎么实现的? 前言 在Java中&#xff0c;保存数据有两种比较简单的数据结构:数组和链表。 数组的特点是:寻址容易&#xff0c;插入…

【RabbitMQ 实战】11 队列的结构和惰性队列

一、 队列的结构 队列的组成&#xff1a; 队列由 rabbit_amgqueue_process 和 backing_queue两部分组成。rabbit_amqqueue_process负责协议相关的消息处理&#xff0c;即接收生产者发布的消息、向消费者交付消息、处理消息的确认 (包括生产端的 confirm 和消费端的 ack) 等。…

Spring Boot读取配置文件

Spring Boot 是一种用于快速构建基于Spring的应用程序的框架&#xff0c;它提供了很多便利的功能和约定&#xff0c;使开发者可以快速搭建、配置和部署应用程序。在Spring Boot中&#xff0c;读取配置文件是一个非常常见的任务&#xff0c;本文将介绍如何在Spring Boot应用程序…