Code前端首页关于Code前端联系我们

24 Shell 脚本参考问答

terry 2年前 (2023-09-28) 阅读数 61 #未命名

Python 在工作和维护中被广泛使用,但很多公司在寻找 Linux 云计算工程师时仍然会问到关于 Shell 脚本的问题。它将帮助您的工作 许多任务在环境中都是自动化的。

以下是面试过程中经常遇到的一些shell脚本面试问题及解答:

问:1什么是shell脚本,有必要吗?

答案:shell 脚本是一个包含一个或多个命令的文本文件。作为系统管理员,我们经常需要使用多个命令来完成一项任务。所有这些命令都可以添加到一个文本文件(shell 脚本)中来完成这些日常工作任务。

问:2 什么是默认登录 shell?如何更改特定用户的登录 shell?

答案:在Linux中,“/bin/bash”是创建用户时分配的默认登录shell。使用 chsh 命令更改默认 shell。示例如下:

# chsh <用户名> -s <新shell>
# chsh linuxtechi -s /bin/sh

Q:3 shell脚本中可以使用哪些类型的变量?

答案:shell脚本中可以使用两种类型的变量:

  • 系统定义的变量
  • 用户定义的变量

系统变量是系统自己创建的。这些变量通常由大写字母组成,可以使用“set”命令查看。

用户变量由系统用户生成和定义。您可以使用命令“echo $”查看变量的值。? usr/share/doc > out.txt 2>&1 )

方法 2: &> (如 # ls /usr/share/doc &> out.txt )

Q:5 " 如何嵌套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

if 最终状态为0,表示上一条命令执行成功。 root@localhost:~# ls /usr/bin/share
ls: 无法访问 /usr/bin/share: 没有这样的文件或目录
root@localhost:~# echo $?
2

如果最终状态不为0,则命令执行失败。

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

答案:在if-then中使用测试命令(-gt等)来比较两个数字。示例如下: #!/bin /bash
echo “ y isgreater than x”
fi

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

答案:简单使用break命令退出执行循环。要退出循环,我们可以在while和until循环中使用break命令。

问:9 shell脚本中resume命令的作用是什么?

Ans:resume命令与abort命令不同。它仅从当前循环的迭代跳转,而不是整个循环。 continue命令在很多情况下都很有用,比如当发生错误时,但我们仍然想继续执行一个大循环。

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

答案:基本语法如下:case变量v
值1)
命令1
命令 2
. Q:11 shell 脚本中 while 循环的语法是什么?

Ans: 就像 for 循环一样,只要条件为真,while 循环就会重复其命令块。与 for 循环不同,while 循环会重复执行,直到条件为 true。基本语法: while [condition]
do
Command...
done

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

答案:使用 chmod 命令来使脚本可执行脚本可执行。示例如下: # chmod a+x myscript.sh

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

答案:#!/bin/bash 是shell 脚本的第一行。这就是所谓的“舍邦线”。这里的 # 符号称为哈希,而 !称为一声巨响。这意味着该命令是通过/bin/bash执行的。? .
最后一条命令
完成

问:15 如何调试shell脚本?

答案:使用'-x'参数(sh -x myscript.sh)来调试shell脚本。另一种方法是使用“-nv”参数(sh -nv myscript.sh)。

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

解答:可以使用test命令来比较字符串。测试命令比较字符串中的每个字符。

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

答案:下表列出了 Bourne 命令行 shell 设置的特殊变量。 内置变量说明
$0 命令行脚本名称
$1 第一个命令行参数
$2 第二个命令行参数
….. ….
$9 第9 个命令行参数 $# 命令行参数个数
$* 所有命令行参数以空格分隔

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

答:可以使用 test 命令来测试文件。基本用法如下: 测试用法
-d 文件名 如果文件存在且是目录,则返回 true
-e 文件名 如果文件存在,则返回 true
-f 文件名 如果文件存在并且是普通文件,返回 true
-r 文件名 如果文件存在并且可读,则返回 true
-s 文件名 如果文件存在且不为空,则返回 true
-w 文件名 如果文件存在且不为空 可写,返回true
-x filename 如果文件存在且可执行,返回true

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

答:可以使用注释来描述场景。它有什么作用以及如何工作。每个注释行都以 # 开头。示例如下: #!/bin/bash
# 这是一个命令
echo “我以 $USER 身份登录”

Q:20 如何让 shell 接收输入从脚本终端?

答:读命令可以从终端(使用键盘)读取数据。 read 命令接受用户输入并将其放入您提供的变量中。示例如下: # vi /tmp/test.sh
#!/bin/bash
echo '请输入您的名字'
读取姓名
echo "我的名字是 $ name "
# ./test.sh
请输入你的名字
LinuxTechi
我叫LinuxTechi

问:21 如何撤销变量或取消分配变量?

答案: 使用命令“unset” 取消变量或取消分配变量。语法如下: # unset

问:22 如何进行算术运算?

答:算术运算有两种方式:

1。使用命令 expr #expr 5 + 2

2。使用美元符号和方括号 ($[表达式])。例如:test=$[16 + 4]; test=$[16 + 4]

问 :23 do-while 语句的基本形式?

答案:do-while 语句与 while 语句类似,但命令是在条件语句之前执行的检查(关于 LCTT 翻译的注释:意味着至少执行一次。)。以下是使用 do-while 语句的语法 do
{
command
} while (条件)

问:24 如何在 shell 脚本中定义函数?

答:函数是一个命名的块代码。一旦定义了代码块,我们就可以在脚本中调用函数名称,并且该代码块将被执行。示例如下: $diskusage () { df -h ; }
翻译注:以下是我给出的shell函数语法,原文没有
[ function ] 函数名 [()]
{
command;
[return int ;]
}

本文结束。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门