当前位置: 首页 > Linux

程序员好Linux云计算教程分享ShellScript面试题

时间:2023-04-07 02:10:26 Linux

程序员好Linux云计算教程分享ShellScript面试题,虽然现在Python广泛应用于运维工作,但是很多公司在找Linux云计算工程师的时候仍然询问shell脚本,它可以帮助您在工作环境中自动执行许多任务。今天就来看看Linux云计算工程师的一些shell脚本面试题吧。  Q:1什么是shell脚本,有必要吗?  答:shell脚本是一个包含一个或多个命令的文本文件。作为系统管理员,我们经常需要使用多个命令来完成一项任务,我们可以将这些命令全部添加到一个文本文件(Shell脚本)中来完成这些日常工作任务。  Q:2默认登录shell是什么,如何更改指定用户的登录shell?使用chsh命令更改默认shell。一个例子是这样的:  #chsh<用户名>-s  #chshlinuxtechi-s/bin/sh  Q:3shell脚本中可以使用哪些类型的变量?  答:在shell脚本中,我们可以使用两种类型的变量:  ·系统自定义变量  ·用户自定义变量  系统变量是系统自己创建的。这些变量通常由大写字母组成,可以用“set”命令查看。  用户变量由系统用户生成和定义,变量的值可以通过命令“echo$<变量名>”查看。  Q:4如何将标准输出和错误输出重定向到同一个位置?usr/share/doc>out.txt2>&1)  方法二:  &>(如#ls/usr/share/doc&>out.txt)  Q:5"if"syntaxinshell脚本如何嵌套?  答:基本语法如下:  if[condition]  then  command1  command2  ...??..  else  if[condition]  然后  命令1  命令2  ...??.  其他  命令1  命令2  ...??..  fi  fi  问:“$”的用途是什么?在6shell脚本中标记?  答:在写shell脚本的时候,如果要查看前面的命令是否执行成功,使用“$?”在if条件下检查上一个命令的结束状态。一个简单的例子如下:  root@localhost:~#ls/usr/bin/shar  /usr/bin/shar  root@localhost:~#echo$?  0  如果结束status为0,表示上一条命令执行成功。  root@localhost:~#ls/usr/bin/share  ls:cannotaccess/usr/bin/share:Nosuchfileordirectory  root@localhost:~#echo$?  2  如果结束状态不是0,表示命令执行失败。  Q:7如何在shell脚本中比较两个数字?  A:在if-then中使用测试命令(-gt等)比较两个数,例子如下:  #!/bin/bash  x=10  y=20  if[$x-gt$y]  then  echo"xis??greaterthany"  else  echo"yisgreaterthanx"  fi  问:8的作用是什么shell脚本中的break命令?  答:break命令的一个简单用法就是退出正在执行的循环。我们可以在while和until循环中使用break命令来跳出循环。  Q:9shell脚本中continue命令的作用是什么?  A:continue命令与break命令不同,它只是跳出当前迭代的循环,而不是跳出整个循环。continue命令在很多情况下很有用,比如发生错误,但我们仍想继续执行大循环。  Q:10告诉我shell脚本中Case语句的语法?  答:基本语法如下:  casevariablein  value1)  command1  command2  .....  lastorder  !!  value2)  order1  order2  ...??  lastorder  ;;  esac  Q:11while循环的语法是什么在shell脚本中?  A:就像for循环一样,while循环只要条件为真,就会重复它的命令块。与for循环不同,while循环迭代直到其条件不为真。基本语法:  while[条件]  do  命令...  done  Q:12如何让脚本可执行?  A:使用chmod命令使脚本可执行。例子如下:  #chmoda+xmyscript.sh  问:13“#!/bin/bash”是做什么的?  答案:#!/bin/bash是shell脚本的第一行,称为Releasecompanion(shebang)行。这里的#符号称为散列,而!称为砰。意思是命令是通过/bin/bash来执行的。  Q:shell脚本中的14个for循环语法?  A:for循环的基本语法:  forvariableinlooplist  do  command1  command2  ….  Lastcommand  done  Q:15如何调试shell脚本?  A:使用'-x'参数(sh-xmyscript.sh)来调试shell脚本。另一种方法是使用“-nv”参数(sh-nvmyscript.sh)。  Q:16shell脚本如何比较字符串?  A:测试命令可以用来比较字符串。测试命令比较字符串中的每个字符。  Q:17Bourneshell(bash)中有哪些特殊变量?  A:下表列出了Bourneshell为命令行设置的特殊变量。  内置变量的解释  $0命令行中的脚本名  $1第一个命令行参数  $2第二个命令行参数  $9第九个命令行参数  $#个数命令行参数  $*所有命令行参数,以空格隔开  Q:18如何在shell脚本中测试一个文件?  答:测试命令可以用来测试一个文件。基本用法如下:  测试用法  -dfilename如果文件存在且是目录,则返回true  -efilename如果文件存在,则返回true  -ffilename如果是文件存在且为普通文件,若文件存在且可读,则返回true  -r文件名,若文件存在且不为空,则返回true  -s文件名,若存在则返回true  -w文件名文件存在且不为空Writable,返回true  -xfilename如果文件存在且可执行,返回true  Q:19如何在shell脚本中写注释?  A:注释可以用来描述一个脚本可以做什么以及它是如何工作的。每个注释行都以#开头。这是一个例子:  #!/bin/bash  #Thisisacommand  echo"Iamloggedinas$USER"  Q:20如何让shell从终端获取脚本的输入?  A:读取命令可以从终端读取数据(使用键盘)。读取命令接受用户输入并将其放入您提供的变量中。范例:  #vi/tmp/test.sh  #!/bin/bash  echo'请输入你的名字'  readname  echo"MyNameis$name"  #./test.sh  Pleaseenteryourname  LinuxTechi  MyNameisLinuxTechi  Q:21如何取消一个变量或取消一个变量赋值?  回答:unset命令用于取消变量或取消变量赋值。语法如下:  #unset<变量名>  Q:22如何进行算术运算?  A:算术运算有两种方式:  1.使用expr命令  #expr5+2  2.使用美元符号和方括号($[expression])例子:  test=$[16+4];test=$[16+4]  Q:23do-while语句的基本格式?  答:do-while语句和while语句类似,但是命令是在条件语句检查之前执行的。下面是do-while语句的语法  do  {  command  }while(condition)  Q:24如何在shell脚本中定义一个函数?  A:函数是一个有名字的代码块。当我们定义一个代码块时,我们可以在我们的脚本中调用函数名,该块将被执行。例子如下:  $diskusage(){df-h;}  译注:以下是我给出的shell函数语法,原文没有  [函数]函数名[()]  {  命令;  [returnint;]}