linux脚本命令考试题,精⼼汇总的24道shell脚本⾯试题
原标题:精⼼汇总的 24 道 shell 脚本⾯试题
虽然现在Python在运维⼯作中已经使⽤很普遍,但是很多企业在Linux云计算⼯程师的时候还是会问到shell 脚本的问题,它有助于你在⼯作环境中⾃动完成很多任务。
如下是⼀些⾯试过程中,经常会遇到的 shell 脚本⾯试问题及解答:
Q:1 Shell脚本是什么、它是必需的吗?
答:⼀个Shell脚本是⼀个⽂本⽂件,包含⼀个或多个命令。作为系统管理员,我们经常需要使⽤多个命令来完成⼀项任务,我们可以添加这些所有命令在⼀个⽂本⽂件(Shell脚本)来完成这些⽇常⼯作任务。
Q:2 什么是默认登录shell,如何改变指定⽤户的登录shell
答:在Linux操作系统,“/bin/bash”是默认登录shell,是在创建⽤户时分配的。使⽤chsh命令可以改变默认的shell。⽰例如下所⽰:
#chsh -s
#chsh linuxtechi -s /bin/sh
Q:3 可以在shell脚本中使⽤哪些类型的变量?
答:在shell脚本,我们可以使⽤两种类型的变量:
系统定义变量
⽤户定义变量
系统变量是由系统系统⾃⼰创建的。这些变量通常由⼤写字母组成,可以通过“set”命令查看。
⽤户变量由系统⽤户来⽣成和定义,变量的值可以通过命令“echo $”查看。
Q:4 如何将标准输出和错误输出同时重定向到同⼀位置?
答:这⾥有两个⽅法来实现:
⽅法⼀:
2>&1 (如# ls /usr/share/doc > 2>&1 )
⽅法⼆:
&> (如# ls/usr/share/doc &> )
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,说明前⼀个命令执⾏成功。
root@localhost:~# ls/usr/bin/share
ls:cannot access /usr/bin/share: No such fileordirectory
root@localhost:~# echo$?
2
如果结束状态不是0,说明命令执⾏失败。
Q:7 在shell脚本中如何⽐较两个数字 ?
答:在if-then中使⽤测试命令( -gt 等)来⽐较两个数字,例⼦如下:
#!/bin/bash
x=10
y=20
if[ $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 my.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 my.sh)可以调试shell脚本。另⼀个种⽅法是使⽤‘-nv’参数( sh -nv my.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 inas $USER”
Q:20 如何让 shell 就脚本得到来⾃终端的输⼊?
答:read命令可以读取来⾃终端(使⽤键盘)的数据。read命令得到⽤户的输⼊并置于你给出的变量中。例⼦如下:
# vi /tmp/test.sh
#!/bin/bash
echo‘Please enter your name’
readname
echo“My Name is $name”
# ./test.sh
Please enter your name
LinuxTechi
My Name is LinuxTechi
Q:21 如何取消变量或取消变量赋值 ?
答:“unset”命令⽤于取消变量或取消变量赋值。语法如下所⽰:
#unset
Q:22 如何执⾏算术运算 ?
答:有两种⽅法来执⾏算术运算:
1.使⽤expr命令
#expr 5 + 2
2.⽤⼀个美元符号和⽅括号($[ 表达式 ])例如:
test=$[16+ 4] ; test=$[16+ 4]
Q:23 do-while语句的基本格式 ?
答:do-while语句类似于while语句,但检查条件语句之前先执⾏命令(LCTT 译注:意即⾄少执⾏⼀次。)。下⾯是⽤do-while语句的语法do
{
命令
} while(条件)
Q:24 在shell脚本如何定义函数呢 ?
答:函数是拥有名字的代码块。当我们定义代码块,我们就可以在我们的脚本调⽤函数名字,该块就会被执⾏。⽰例如下所⽰:
linux循环执行命令脚本
$ diskusage () { df -h ; }
译注:下⾯是我给的shell函数语法,原⽂没有
[ function ]函数名 [()]
{
命令;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。