• 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 < 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

  • 相关阅读:
    03 【响应式原理 reactive对比ref setup注意点】
    综述--知识蒸馏
    包含光栅的高NA显微系统
    The user specified as a definer (‘platformadmin‘@‘%‘) does not exist.
    使用 OpenTelemetry 构建 .NET 应用可观测性(4):ASP.NET Core 应用中集成 OTel
    Linux-查看服务器--硬件配置信息
    Facebook群控:利用代理IP克服多账号关联
    jQuery使用echarts循环插入图表
    注册的业务、登录业务、个人中心、nginx配置【VUE项目】
    博捷芯:半导体芯片切割,一道精细工艺的科技之门
  • 原文地址:https://blog.csdn.net/cfy_banq/article/details/133782268