Shell 脚本面试题及答案
shell常见面试题
1、运行Shell脚本有两种方法。
1)作为可执行程序将上面的代码保存为test.sh,并 cd 到相应目录:chmod +x ./test.sh #使脚本具有执行权限./test.sh #执行脚本2)作为解释器参数这种运行方式是,直接运行解释器,其参数就是shell脚本的文件名,如:/bin/sh test.sh3)当前shell环境执行,.a.sh或者source a.sh执行。
2、./ 和 sh的使用区别1)使用“./”执行脚本,对应的xxx.sh脚本必须要有执行权限(绿色);2)使用“sh” 执行脚本,对应的xxx.sh没有执行权限,亦可执行;如果我直接运行./a.sh,首先你会查找脚本第一行是否指定了解释器,如果没指定,那么就用当前系统默认的shell(大多数linux默认是bash),如果指定了解释器,那么就将该脚本交给指定的解释器比如a.run文件内容是这个:#!/usr/bin/pythonprint("This is Python script")那么你如果运行./a.run,结果就是输出一行文字,但是如果你运行sh a.run,会报错。
sh:#!/bin/bash 可以不写。
因为将a.sh作为参数传给sh(bash)命令来执行的,这时不是a.sh自己来执行,而是被人家调用执行,所以不要执行权限,采用系统默认bash解释器。
6)Shell文件包含例如,创建两个脚本,一个是被调用脚本 subscript.sh,内容如下:echo "shell测试"一个是主文件 main.sh,内容如下:#!/bin/bash. ./subscript.shecho $url执行脚本:$chomd +x main.sh./main.shshell测试注意:被包含脚本不需要有执行权限。
2、Shell变量Shell变量的定义、删除变量、只读变量、变量类型。
1)定义变量Shell 支持以下三种定义变量的方式:variable=valuevariable='value'variable="value"3)变量的单引号和双引号的区别#!/bin/bashurl="中文网11"website1='中文网:${url}'website2="中文网:${url}"echo $website1echo $website2运行结果:中文网:${url}中文网:中文网11以单引号' '包围变量的值时,单引号里面是什么就输出什么,即使内容中有变量和命令(命令需要反引起来)也会把它们原样输出。
Linux Shell编程复习 题集附答案
Linux Shell编程复习题集附答案Linux Shell编程复习题集附答案在本文中,我们将为您提供一份包含答案的Linux Shell编程复习题集。
通过这些题目的练习,您可以加深对Linux Shell编程的理解,并巩固所学知识。
一、基础知识题1. 什么是Shell?Shell是一种解释性的编程语言,用户可以通过Shell来与操作系统进行交互和控制。
答案:Shell是一种解释器,它接收用户的命令并将其转换为操作系统能够理解和执行的形式。
2. 常见的Linux Shell有哪些?答案:常见的Linux Shell有Bash、Zsh、Csh、Ksh等。
3. 如何查看当前使用的Shell是哪种类型?答案:可以使用echo $0命令查看当前使用的Shell类型。
4. 什么是环境变量?如何查看当前的环境变量?答案:环境变量是用来存储系统运行时的配置信息的变量。
可以使用echo $变量名命令查看当前环境变量的值。
5. 如何定义一个变量并给其赋值?答案:可以使用变量名=值的形式来定义并赋值一个变量。
二、基本命令题1. 如何查看当前所在的目录?答案:可以使用pwd命令来查看当前所在的目录。
2. 如何列出当前目录下的所有文件和文件夹?答案:可以使用ls命令来列出当前目录下的所有文件和文件夹。
3. 如何切换到某个目录?答案:可以使用cd命令加上目标目录的路径来切换到某个目录。
例如:cd /path/to/directory。
4. 如何创建一个新的文件夹?答案:可以使用mkdir命令加上目录名来创建一个新的文件夹。
例如:mkdir new_folder。
5. 如何复制一个文件?答案:可以使用cp命令加上源文件和目标文件的路径来复制一个文件。
例如:cp source_file target_file。
三、条件控制题1. 编写一个Shell脚本,判断一个文件是否存在,若存在则输出文件存在,若不存在则输出文件不存在。
linux面试题参考答案(11).doc
linux面试题参考答案(11)四.编程与应用题:1.用Shell编程,判断一文件是不是字符设备文件,如果是将其拷贝到/dev 目录下。
参考程序:#!/bin/shFILENAME=echo “Input file name:”read FILENAMEif [ -c “$FILENAME” ]thencp $FILENAME /devfi2.请下列shell程序加注释,并说明程序的功能和调用方法:#!/bin/sh#!/bin/sh## /etc/rc.d/rc.,服务器网页的根目录/实用同样的端口号E OpenSSH是免费下载的应程序7.关于NFS服务器描述正确的是(BC)A 网络中实现Windows系统之间文件系统共享的应用软件B 网络中实现Linux系统之间文件系统共享的应用软件C 网络中实现Unix系统之间文件系统共享的应用软件D 网络中实现Windows系统和Unix之间文件系统共享的应用软件E 网络中实现Windows系统和Linux之间文件系统共享的应用软件8.关于sed描述正确的是(ABD)A sed 是Linux系统中的流编辑器B sed 是UNIX系统中的流编辑器C sed 网络文件系统的类型D 利用管道对标准输入/标准输入的数据进行编辑和组合E sed是NFS的应用程序9.关于限制磁盘限额,描述正确的是(ABD)A 使用edquota可以监控系统所有用户使用的磁盘空间,并在接近极限时提示用户B 用户组的磁盘限额是用户组内所有用户予设磁盘空间总和C 单个用户的磁盘限额就是该用户所在用户组内所有磁盘限额的总合D 在Linux系统下限制用户使用的磁盘空间可以使用edquotaE 用户组的磁盘限额就是该用户组内拥有最大磁盘限额值的用户的磁盘限额10.关于建立系统用户的正确描述是()A 在Linux系统下建立用户使用adduser命令B 每个系统用户分别在/etc/passwd和/etc/shadow文件中有一条记录C 访问每个用户的工作目录使用命令“cd /用户名”D 每个系统用户在默认状态下的工作目录在/home/用户名E 每个系统用户在/etc/fstab文件中有一条记录。
shell 练习题 答案
shell 练习题答案Shell练习题答案1. 问题描述:下面是一个Shell练习题,请写出你认为的答案,并提供相应的解释和思路。
2. 答案:在这道练习题中,我们将探讨一些常见的Shell编程问题。
问题一:如何在Shell中输出Hello World?答案一:可以使用echo命令来输出Hello World。
具体的命令如下:```echo "Hello World"```解释:echo命令用于在终端或脚本中输出文本,它会将文本原样输出到屏幕。
在这里,我们将输出的文本设为Hello World。
问题二:如何在Shell中创建一个变量,并将其输出?答案二:可以使用以下命令创建一个变量,并将其输出:```my_variable="Hello Shell"echo $my_variable```解释:在第一行中,我们通过将文本"Hello Shell"赋值给变量my_variable来创建一个变量。
在第二行,我们使用echo命令将该变量的内容输出到屏幕。
问题三:如何在Shell脚本中使用if语句?答案三:以下展示了一个使用if语句的示例:```shellif [ 1 -eq 1 ]; thenecho "1 equals 1"fi```解释:在这个例子中,我们使用了if [ 1 -eq 1 ]这个条件判断语句。
条件判断部分被放在方括号内,-eq表示比较两个数是否相等。
如果条件成立(即1等于1),则会执行echo命令输出"1 equals 1"。
问题四:如何在Shell中遍历一个数组?答案四:以下是一个遍历数组的示例:```shellmy_array=("Apple" "Banana" "Orange")for item in "${my_array[@]}"; doecho $itemdone```解释:在这个例子中,我们先创建了一个名为my_array的数组,其中包含了三个元素(Apple、Banana和Orange)。
5个实用的shell脚本面试题和答案
5个实⽤的shell脚本⾯试题和答案这边提到的5个⾯试问题,延续之前的有关Linux⾯试问题和答案。
如果你是Tecmint的读者,你的⽀持我⾮常感谢。
1. 写⼀个shell脚本来得到当前的⽇期,时间,⽤户名和当前⼯作⽬录。
答案 : 输出⽤户名,当前⽇期和时间,以及当前⼯作⽬录的命令就是logname,date,who i am和pwd。
现在,创建⼀个名为userstats.sh⽂件,将下⾯的代码添加到它。
复制代码代码如下:#!/bin/bashecho "Hello, $LOGNAME"echo "Current date is `date`"echo "User is `who i am`"echo "Current directory `pwd`"给它添加执⾏权限,并且执⾏他。
复制代码代码如下:# chmod 755 userstats.sh# ./userstats.sh样例输出复制代码代码如下:Hello, aviCurrent date is Sat Jun 7 13:05:29 IST 2014User is avi pts/0 2014-06-07 11:59 (:0)Current directory /home/avi/Desktop2.写⼀个shell脚本,进⾏两个数字的相加,如果没有输⼊参数就输出错误信息和⼀⾏使⽤说明答案 : 下⾯是简单的shell脚本以及描述,如果没有命令⾏参数,它会抛出错误与如何使⽤脚本的说明。
再创建⼀个名为twonumbers.sh⽂件和下⾯的内容添加到⽂件⾥。
复制代码代码如下:#!/bin/bash# The Shebangif [ $# -ne 2 ]# If two Inputs are not received from Standard Inputthen# then execute the below statementsecho "Usage - $0 x y"# print on standard output, how-to use the script (Usage - ./1.sh x y )echo " Where x and y are two nos for which I will print sum"# print on standard output, “Where x and y are two nos for which I will print sum ”exit 1# Leave shell in Error Stage and before the task was successfully carried out.fi# End of the if Statement.echo "Sum of $1 and $2 is `expr $1 + $2`"# If the above condition was false and user Entered two numbers as a command Line Argument,it will show the sum of the entered numbers.给他添加可执⾏权限,并且执⾏。
shell脚本编程基础面试题
shell脚本编程基础⾯试题⼀级标题shell脚本编程基础1、编写脚本/root/bin/systeminfo.sh,显⽰当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本, CPU型号,内存⼤⼩,硬盘⼤⼩[root@magedu ~]# vim sysinfo.sh#!/bin/bashipv4=`ifconfig |egrep -o "\<([1-9]|[1-9][0-9]|1[0-9]{2}|2[01][0-9]|22[0-3])\>(\.\<([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\>){2}\.\<([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\>"`echo "当前主机系统信息如下:"echo 主机名: `hostname`echo ipv4地址:"$ipv4"echo 操作系统版本: `cat /etc/redhat-release |cut -d. -f1-2`echo 内核版本: `uname -r`echo CPU型号: `lscpu |grep "Model name"|tail -1 |tr -s ' '|cut -d: -f2`echo 内存⼤⼩: `free -mh |head -2|tail -1|tr -s ' '|cut -d' ' -f2`echo 硬盘容量: `fdisk -l|head -2|tail -1|cut -d, -f1|cut -d' ' -f2-4`带颜⾊的版本。
2、编写脚本/root/bin/backup.sh,可实现每⽇将/etc/⽬录备份到/root/etcYYYY-mm-dd中[root@magedu ~]# vim /root/bin/backup.sh#!/bin/bashcp -a /etc/ /root/etc`date +%Y-%m-%d`echo "/etc⽬录备份完成"3、编写脚本/root/bin/disk.sh,显⽰当前硬盘分区中空间利⽤率最⼤的值[root@magedu ~]# vim /root/bin/disk.sh#!/bin/bashecho "当前硬盘分区中空间利⽤率最⼤的值: `df |grep /dev/sd |grep -o "[0-9]\{1,3\}%" |sort -rn|head -1`4、编写脚本/root/bin/links.sh,显⽰正连接本主机的每个远程主机的IPv4地址和连接数,并按连接数从⼤到⼩排序[root@magedu ~]# vim /root/bin/links.sh#!/bin/shecho "每个远程主机的IPv4地址和连接数:`netstat -tan |tr -s " " ":"|cut -d: -f6|grep ^[[:digit:]]|sort|uniq -c |sort -nr`"1、编写脚本sumid.sh,计算/etc/passwd⽂件中的第10个⽤户和第20⽤户的ID之和[root@magedu ~]# vim /root/bin/sumid.sh#!/bin/baship1=`cat /etc/passwd |head -10 | tail -1|cut -d: -f3`ip2=`cat /etc/passwd |head -20 | tail -1|cut -d: -f3`let sum=ip1+ip2echo $sum2、编写脚本sumspace.sh,传递两个⽂件路径作为参数给脚本,计算这两个⽂件中所有空⽩⾏之和##[root@magedu ~]# vim /root/bin/sumspace.sh#!/bin/shspace1=`cat $1 |grep "^$"|wc -l`space2=`cat $2 |grep "^$"|wc -l`let sum=space1+space2echo "两个⽂件中所有空⽩⾏之和:$sum"3、编写脚本sumfile.sh,统计/etc, /var, /usr⽬录中共有多少个⼀级⼦⽬录和⽂件[root@magedu ~]# vim /root/bin/sumfile.sh#!/bin/bashnumetc=ls -A /etc|wc -lnumvar=ls -A /var|wc -lnumusr=ls -A /usr|wc -llet sum=numetc+numvar+numusrecho $sum1、编写脚本argsnum.sh,接受⼀个⽂件路径作为参数;如果参数个数⼩于1,则提⽰⽤户“⾄少应该给⼀个参数”,并⽴即退出;如果参数个数不⼩于1,则显⽰第⼀个参数所指向的⽂件中的空⽩⾏数[root@magedu ~]# vim argsnum.sh#!/bin/bash[[ $# -lt 1 ]] && (echo "at least one argument"&&exit)|| echo `grep '^$' $1|wc -l`2、编写脚本hostping.sh,接受⼀个主机的IPv4地址做为参数,测试是否可连通。
软件运维面试题目及答案
软件运维面试题目及答案面试是求职过程中至关重要的一环,对于软件运维岗位而言,除了对技术要求较高,面试官常常会通过提问来考察面试者的知识广度和深度。
为了帮助候选人更好地应对软件运维面试,本文为大家整理了一些常见的面试题目及其答案。
一、Linux相关题目1. 什么是Linux操作系统?答:Linux是一套自由开放源代码的类Unix操作系统,它是在Unix 操作系统的基础上克隆并发展而来的。
2. 如何查看当前目录下所有文件?答:可以使用 ls 命令来查看当前目录下的所有文件。
ls命令的格式是:ls [参数] [文件名],若不指定文件名,则默认为当前目录。
3. 如何使用tar命令打包文件?答:可以使用 tar 命令打包文件。
tar命令的格式是:tar [参数] [要打包的文件或目录]。
如:tar -cvf filename.tar dirname。
4. 如何查看文件内容?答:可以使用 cat 命令来查看文件内容。
cat命令的格式是:cat [选项] [文件]。
如:cat filename。
二、网络相关题目1. 什么是IP地址?答:IP地址(Internet Protocol Address)是指分配给网络设备的唯一标识符,用于在网络中定位和识别设备。
2. 如何查看本机IP地址?答:可以使用 ifconfig 或 ip addr 命令来查看本机IP地址。
如:ifconfig eth0 或 ip addr show eth0。
3. 如何测试网络连通性?答:可以使用 ping 命令测试网络连通性。
ping命令的格式是:ping [参数] [目标地址]。
4. 什么是子网掩码?答:子网掩码(subnet mask)用于指定一个IP地址中网络部分和主机部分的划分,一般由32个二进制位组成。
三、数据库相关题目1. 什么是数据库?答:数据库是存储和管理数据的软件系统,它可以提供数据的组织、存储和检索等功能。
2. 关系型数据库与非关系型数据库有何区别?答:关系型数据库采用表格的形式存储数据,数据以行和列的形式组织;非关系型数据库则采用键值对、文档、列族等方式存储数据。
70 个经典的shell 脚本面试问题及解答
选择了 70 个你可能遇到的 shell 脚本面试问题及解答。
了解脚本或至少知道基础知识对系统管理员来说至关重要,它也有助于你在工作环境中自动完成很多任务。
在过去的几年里,我们注意到所有的 linux 工作职位都要求脚本技能。
1) 如何向脚本传递参数 ?./script argument例子: 显示文件名称脚本 ?1 2 3 4 ./show.sh file1.txtcat show.sh#!/bin/bashecho $1(LCTT 译注:谢谢某匿名访客的提醒,原题有误,修改之。
)2) 如何在脚本中使用参数 ?第一个参数 : $1,第二个参数 : $2例子 : 脚本会复制文件(arg1) 到目标地址(arg2) ?1 2 3 4 ./copy.sh file1.txt /tmp/cat copy.sh#!/bin/bashcp $1 $23) 如何计算传递进来的参数 ?$#4) 如何在脚本中获取脚本名称 ?$05) 如何检查之前的命令是否运行成功 ?$?6) 如何获取文件的最后一行 ?tail-17) 如何获取文件的第一行 ?head-18) 如何获取一个文件每一行的第三个元素 ?awk'{print $3}'9) 假如文件中每行第一个元素是 FIND ,如何获取第二个元素awk'{ if ($1 == "FIND") print $2}'10) 如何调试 bash 脚本将 -xv 参数加到 #!/bin/bash 后例子:#!/bin/bash –xv11) 举例如何写一个函数 ? ?1 2 3 function example {echo "Hello world!"}12) 如何向连接两个字符串 ? ?1 2 3 4 V1="Hello"V2="World"V3=${V1}${V2}echo $V3输出HelloWorld13) 如何进行两个整数相加 ? ?1 2 3 4 V1=1V2=2let V3=$V1+$V2echo $V3输出3据 @kashu 的意见,本题的更佳回答为:两个整数相加,还有若干种方法实现: ?1 2 3 4 5 6 7 A=5B=6echo $(($A+$B)) # 方法 2echo $[$A+$B] # 方法 3expr $A + $B # 方法 4echo $A+$B | bc # 方法 5awk 'BEGIN{print '"$A"'+'"$B"'}' # 方法 614) 如何检查文件系统中是否存在某个文件 ? ?1 2 3 4 if [ -f /var/log/messages ]thenecho "File exists"fi15) 写出 shell 脚本中所有循环语法 ?for 循环 : ?1 2 3 foriin$(ls);doecho item:$idonewhile 循环 : ?1 2 3 4 5 6 #!/bin/bashCOUNTER=0while [ $COUNTER -lt 10 ]; doecho The counter is $COUNTERlet COUNTER=COUNTER+1doneuntil 循环 :?1 2 3 4 5 6 #!/bin/bashCOUNTER=20until [ $COUNTER -lt 10 ]; doecho COUNTER $COUNTERlet COUNTER-=1done16) 每个脚本开始的 #!/bin/sh 或 #!/bin/bash 表示什么意思 ?这一行说明要使用的 shell 。
linux shell面试问题
linux shell面试问题当涉及到Linux shell面试问题时,通常会涉及到以下几个方面,基本概念、命令行操作、脚本编程、权限管理和系统管理等方面。
下面我将从这几个方面逐一进行回答。
首先,基本概念方面的问题可能涉及到什么是Shell、Shell和Kernel的关系、常见的Shell类型有哪些以及它们的区别等。
Shell是一个命令行解释器,它是用户与操作系统内核之间的接口。
Shell和Kernel的关系是Shell作为用户与操作系统内核之间的接口,负责接收用户输入的命令并将其转换为操作系统内核能够理解的格式。
常见的Shell类型包括Bash、Korn shell、C shell等,它们的区别在于语法、功能和特性方面有所不同。
其次,命令行操作方面的问题可能涉及到常用的命令有哪些、如何查看文件内容、如何查找文件、如何管理进程等。
常用的命令包括ls、cd、cp、mv、rm、mkdir、rmdir、cat、more、less、grep、find、ps、top等。
通过这些命令可以实现对文件和目录的操作、查看文件内容、查找文件以及管理系统进程等功能。
再者,脚本编程方面的问题可能涉及到如何编写Shell脚本、Shell脚本中的变量、条件判断和循环结构、函数等。
编写Shell脚本可以使用文本编辑器编写,以.sh为扩展名保存。
Shell脚本中的变量使用$符号引用,可以使用if-else语句进行条件判断,使用for和while语句进行循环,还可以定义和调用函数。
此外,权限管理方面的问题可能涉及到文件和目录的权限是如何管理的、如何修改文件和目录的权限、如何授予用户和组权限等。
文件和目录的权限包括读、写和执行权限,可以使用chmod命令修改权限,可以使用chown和chgrp命令改变文件和目录的所有者和所属组。
最后,系统管理方面的问题可能涉及到如何进行系统信息查看、如何进行系统配置、如何进行系统维护等。
可以使用uname、hostname、df、free、top等命令查看系统信息,可以通过修改配置文件实现系统配置,可以使用cron进行定时任务管理,可以使用rsync进行数据备份等。
shell常见面试题
shell常见面试题Shell脚本是一种在Unix、Linux系统中用于运行命令的编程语言。
在面试过程中,掌握Shell脚本编写以及相关的常见面试题是非常重要的。
本文将介绍一些常见的Shell面试题,希望能够帮助您在面试中更好地准备和表现。
1. 什么是Shell脚本?Shell脚本是一种解释性脚本语言,用于编写一系列的命令,以便在Unix、Linux系统中自动执行。
它提供了交互式和非交互式的命令行操作,可以用于执行常见的系统管理任务以及自动化任务。
2. 如何创建并执行一个Shell脚本?要创建一个Shell脚本,您可以使用任何文本编辑器编写一个以.sh 为后缀的文件,例如:script.sh。
在该文件中,您可以编写需要执行的一系列命令,如:```#!/bin/bashecho "Hello, World!"```保存并退出文件后,使用以下命令执行脚本:```$ chmod +x script.sh$ ./script.sh```3. 如何传递参数给Shell脚本?Shell脚本可以通过命令行参数来接收外部输入。
在脚本中,可以使用特殊变量$1,$2,$3等来引用传递的参数。
例如,脚本名为script.sh,可以通过以下命令传递参数:```$ ./script.sh arg1 arg2 arg3```脚本中可以通过$1引用arg1,$2引用arg2,以此类推。
4. 如何获取Shell脚本的输入?除了通过命令行参数传递输入外,脚本还可以通过读取标准输入来获取输入。
可以使用read命令来获取用户输入的值,例如:```#!/bin/bashecho "Please enter your name:"read nameecho "Hello, $name!"```5. 如何使用条件语句在Shell脚本中做判断?在Shell脚本中,可以使用if-else语句来做条件判断。
SHELL试题
SHELL 试题姓名:得分:一、选择题:1关于shell 中特殊字符说法错误的是()A 、星号(*):可以匹配任何字符串,包括空串。
B 、问号(?):?可以匹配文件名中的任何字符。
C 、中括号([]):可以匹配一个集合的元素。
D 、执行符号(&):“&”号使程序以后台的形式执行。
2关于shell 中&&,||,|,&说法错误的是()A 、command1 && command2:当且仅当:当且仅当command1执行失败后才执行command2 B 、command1 || command2:当且仅当:当且仅当command1执行失败后才执行command2 C 、command1 | command2:command1输出作为command2的输入D 、command1 & :command1后台执行3关于用户自定义变量说法错误的是()A 、在程序中变量需要事先说明类型。
B 、没有全程、局部的区别,变量可以随时随地定义。
C 、其名称是以字母开头的不包含空白字元的任何字符串,长度不限。
D 、其使用范围只限于程序运行期间。
4关于内置变量变量说法错误的是()A 、$0 Shell 所有参数B 、$n Shell 程序(或过程)的第n 个位置参数值,n=1..9 C 、$* Shell 程序所有的位置参数组成的字符串D 、$# Shell 程序的位置参数个数5下列方法给shell 变量var 赋值报错误的是()A var= ls –l B read var B read var C var=`ls -l` C var=`ls -l` C var=`ls -l` D var=$1 D var=$1 6给脚本shell.ksh 文件的所有者赋予可执行权限正确的语句()A chmod 644 shell.ksh B chmod 755 shell.ksh C chown 644 shell.ksh D chown 755 shell.ksh 7下列不能用于循环控制流程的()A 、for B 、while C 、util D 、go 8如果Shell 程序以"#!"开头,则"#!"后面所写的就是所使用的Shell ,而且要将整个路径名称指出来下列说法错误的是()A 使用Bourne Shell 程序开头是#!/bin/sh B 使用C Shell 程序开头是#!/bin/csh C 使用Korn Shell 程序开头是#!/bin/ksh D 使用/etc/perl 程序开头是#! /etc/perl 9下列说法错误的是( )A[ -f $file ] #名为 $file 的目录是否存在。
shell1 面试题目
What percentage of women leaving university went into finance and administration?10%11%14%20%21%How many thousand tonnes of liquids were lifted in 1989?1.31.51.92.0None of theseHow much more per pupil do London authorities spend on staff in secondary schools than in primary schools?£209£219£232£291Which one area of employment is least popular among female universityleavers?Cannot sayComputingLibrary WorkMarketingResearchHow much more coal was lifted in 1992 than in 1987?How much more than "other" authorities do London authorities spend per secondary pupil on premises?£39£47 £184£137£291Which was the most popular area of work chosen by women leaving university?How many thousand tonnes of merchandise and liquids were lifted in 1991?1.92.22.82.90.1 thousand tonnes 0.2 thousand tonnes0.3 thousand tonnes1.3 thousand tonnes2.0 thousand tonnesAdministration FinanceHealthSalesTeachingWhat is the total cost to London authorities per secondary school pupil?£688£948£985£1,357 £1,427Into which two areas of employment did a combined 19% of female university leavers go?Admin & ComputingHealth & ResearchMarketing & AdminTeaching & ComputingTeaching & LibraryIn which year was most merchandise carried?On what do "other" authorities spend 13.8% of their total outlay per primary school pupil?Books & EquipmentPremisesStaffOtherCannot sayHow many women went into teaching when they left university?1406508701988 1989199019911992None of theseIn 1988 how much more merchandise than liquids was lifted?0.2 thousand tonnes0.9 thousand tonnes1.0 thousand tonnes1.1 thousand tonnes2.2 thousand tonnesWhat is the total expenditure for a primary school in London with 320 pupils?£300,360£303,360£330,306£330,360£360,303How many more women went into computing than into research?120135195325None of theseHow much more liquid was carried in 1989 than in 1992?0.5 thousand tonnes0.8 thousand tonnes1.3 thousand tonnes1.5 thousand tonnes1.8 thousand tonnesWhat is the difference in total cost to London authorities between one secondary pupil and one primary pupil?£260£409£948None of theseHow many women went into computing and administration?940104011001140None of theseIn which year was an equal tonnage of merchandise and coal carried?19871988199019911992Approximately what proportion of the total amount spent per primary pupil by "other" authorities is on books and equipment?1%3%10%12%17%24% of female university leavers go intoFinance, Research & AdminFinance, Teaching & ResearchHealth, Computing & ResearchMarketing, Finance & ComputingTeaching, Research & Admin----------------------------------------------------------------------------------------------------------------------The course lasted twelve weeks.TrueFalseCannot SayA lesson time of two hours was considered to be the best length.TrueFalseCannot SayA target of ninety hours was set for the course.TrueFalseCannot SayThese courses are beneficial to the entire population.TrueFalseCannot SayThis memo should be distributed to all staff.TrueFalseCannot SayStatistics show that, on average, a secretary spends a third of working time filing.TrueFalseCannot SayMs Espey should be contacted with further enquiries.TrueFalseCannot SayAll firms should employ a full time filing clerk.TrueFalseCannot SayAccording to the survey, executives in the north make around thirty-nine business calls a day.TrueFalseCannot SayThe telephone will always be the executive's most used tool.TrueFalseCannot SayOver half of the executives in the survey said that they waste a lot of time on the telephone.TrueFalseCannot SayTelephones are often misused.TrueFalseCannot SayVisitors sometimes get out of their car to look more closely at theanimals.TrueFalseCannot SayAccidents have occurred when visitors wind down their windows to take photographs."Danger" signs are placed every fifty yards around the park.TrueFalseCannot SayThe general public should be banned from safari parks.TrueFalseTrueFalse Cannot SayIn the past, complaints about tobacco smoke pollution would have been treated seriously.TrueFalseCannot Say"Secondary inhalation" is breathing in another's smoke.TrueFalseCannot SayMedical journals have proposed that smoking should be banned from offices.TrueFalseCannot SaySmokers have an increased risk of heart disease.TrueFalseWise parents should praise their child's drawings.TrueFalseCannot SayTeachers and parents should avoid talking to each other.TrueFalseCannot SayAll children watch television.TrueFalseCannot SayAll children should go to play school.TrueFalseCannot SaySixty per cent of Britain's married women have their own careers.TrueFalseCannot SayTelevision writers never refer to wives as "her indoors".TrueFalseCannot SayWomen hold all the top posts in the television industry.TrueFalseCannot SayThe National Statistics show that most couples have 2.3 children.TrueFalseCannot Say。
基础被问到的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>">方法二:
">Q:5 shell脚本中“if”语法如何嵌套?。
shell面试题全集
shell面试题全集当谈到Shell面试题时,这是一个广泛的话题,因为Shell是一种常用的命令行解释器,用于在Unix和类Unix操作系统上执行命令和脚本。
下面是一些常见的Shell面试题,我将从多个角度回答这些问题。
1. 什么是Shell?它有哪些常见的变种?Shell是一种命令行解释器,用于与操作系统交互并执行命令和脚本。
常见的Shell变种包括Bash(Bourne Again Shell)、Csh (C Shell)、Ksh(Korn Shell)、Tcsh(Tenex C Shell)和Zsh (Z Shell)等。
2. 如何在Shell脚本中定义变量?可以使用等号(=)将值赋给变量,例如,`name="John"`。
注意,变量名不能以数字开头,且不需要使用类型声明。
3. 如何在Shell脚本中进行条件判断?可以使用if-else语句进行条件判断,例如:if [ $age -gt 18 ]; then.echo "成年人"else.echo "未成年人"fi.这里的`-gt`表示大于,还有其他比较运算符如`-eq`(等于)、`-lt`(小于)等。
4. 如何在Shell脚本中进行循环操作?可以使用for循环或while循环进行迭代操作。
例如,使用for循环遍历数组:fruits=("apple" "banana" "orange")。
for fruit in ${fruits[@]}; do.echo $fruit.done.使用while循环读取文件内容:while read line; do.echo $line.done < file.txt.5. 如何获取命令行参数?可以使用特殊变量$1、$2等来获取命令行参数。
例如,执行脚本时输入`./script.sh arg1 arg2`,可以通过$1获取arg1,通过$2获取arg2。
shell条件测试与判断选择题
shell条件测试与判断选择题在Shell脚本编程中,条件测试和判断是基本的控制结构之一,用于根据特定条件执行不同的操作。
以下是关于Shell条件测试和判断的简介:条件测试:条件测试用于评估表达式的结果,通常涉及到比较运算符、逻辑运算符等。
根据测试的结果,Shell会返回真(0)或假(非0)的值。
在Shell中,常用的测试命令有test 和[ ],它们可以测试字符串、整数、文件等不同类型的值。
条件判断:条件判断是根据条件测试的结果来执行不同的操作。
Shell提供了if、elif和else等关键字来实现条件判断。
if语句用于判断条件是否成立,如果成立则执行相应的命令序列;elif语句用于在前面的条件不成立时继续判断其他条件;else语句用于在所有条件都不成立时执行默认的操作。
在Shell脚本中,条件测试和判断常常结合使用,以实现根据特定条件执行不同的操作。
例如,可以使用条件测试来检查文件是否存在,然后根据测试结果使用条件判断来决定是读取文件内容还是显示错误消息。
需要注意的是,Shell中的条件测试和判断与其他编程语言有所不同,特别是在处理返回值和真假的判断上。
因此,在编写Shell脚本时,需要仔细考虑条件测试和判断的用法,并参考Shell的文档和语法规范来确保脚本的正确性。
另外,对于复杂的条件判断和逻辑运算,Shell还提供了一些高级的控制结构,如case 语句和算术比较运算符等,可以进一步扩展条件测试和判断的功能。
以下是一些关于Shell条件测试与判断的选择题,供您参考:在Shell中,哪个命令用于进行条件测试?A. ifB. testC. whileD. for答案:B. test解释:在Shell中,test命令用于进行条件测试。
虽然if用于条件判断,但它不是用于条件测试的命令。
while和for用于循环结构,与条件测试无关。
如何检查变量$a是否等于字符串"hello"?A. [ a="hello"]B.[a == "hello" ]C. [ "a"="hello"]D.["a" == "hello" ]答案:C. [ "$a" = "hello" ]解释:在Shell中,使用[和]进行条件测试时,需要注意变量和字符串的引号。
shell脚本练习题word资料19页
shell脚本例子集锦(习题总结)练习一:写一个脚本1.设定变量FILE的值为/etc/passwd2.依次向/etc/passwd中的每个用户问好,并且说出对方的ID是什么形如:(提示:LINE=`wc -l /etc/passwd | cut -d" " -f1`)Hello,root,your UID is 0.3.统计一个有多少个用户答案一:#!/bin/bashfile="/etc/passwd"LINES=`wc -l $file | cut -d" " -f1`for I in `seq 1 $LINES`;douserid=`head -$I $file | tail -1 |cut -d: -f3`username=`head -$I $file | tail -1 |cut -d: -f1`echo "hello $username,your UID is $userid"doneecho "there are $LINES users"答案二:#!/bin/bashfile=/etc/passwdlet num=0for I in `cat $file`;dousername=`echo "$I" | cut -d: -f1`userid=`echo "$I" | cut -d: -f3`echo "Hello,$username,your UID is $userid"num=$[$num+1]doneecho "there are $num users"练习二:写一个脚本1.切换工作目录至/var2.依次向/var目录中的每个文件或子目录问好,形如:(提示:for FILE in /var/*;或for FILE in `ls /var`;)Hello,log3.统计/var目录下共有多个文件,并显示出来答案:#!/bin/bashcd /varlet num=0for I in `ls /var/*`;doecho "hello $I"num=$[$num+1]doneecho "the number of files is $num"练习三:写一个脚本1.设定变量file的值为/etc/passwd2.使用循环读取文件/etc/passwd的第2,4,6,10,13,15行,并显示其内容3.把这些行保存至/tmp/mypasswd文件中答案:#!/bin/bashfile="/etc/passwd"for I in 2 4 6 10 13 15;doexec 3>/tmp/mypasswdline=`head -$I $file | tail -1`echo "$line"echo "$line" >&3exec 3>&-done练习四:写一个脚本传递两个整数给脚本,让脚本分别计算并显示这两个整数的和,差,积,商答案如下:vim test.sh#!/bin/bashecho "first number $1" (表示输出第一个数)echo "second number $2" (表示输出第二个数)echo "$(($1+$2))" (输出两数之和)echo"$[$1-$2]" (输出两数之差)echo"$[$1*$2]" (输出两数之积)echo"$[$1/$2]" (输出两数之商):wq(表示保存并退出vi编辑器)chmod +xtest.sh (给test.sh执行的权限)./test.sh 23 (传递两个参数并执行脚本作业一:写一个脚本:1.创建目录/tmp/scripts2.切换工作目录至此目录中3.复制/etc/pam.d目录至当前目录,并重命名为test4.将当前目录的test及其里面的文件和子目录的属主改为redhat5.将test及其子目录中的文件的其它用户的权限改为没有任何权限答案:#!/bin/bashmkdir -v /tmp/scriptscd /tmp/scriptscp -r /etc/pam.d ./testchown -R redhat ./testchmod -R o=--- ./test作业二:写一个脚本1.显示当前系统日期和时间,而后创建目录/tmp/lstest2.切换工作目录至/tmp/lstest3.创建目录a1d,b56e,6test4.创建空文件xy,x2y,7325.列出当前目录下以a,x或者6开头的文件或目录6.列出当前目录下以字母开头,后跟一个任意数字,而后跟任意长度字符的文件或目录答案:#!/bin/bashdatemkdir -pv /tmp/lstestcd /tmp/lstestmkdir a1d b56e 6testtouch xy x2y 732ls [ax6]*ls [[:alpha:]][[:digit:]]*作业三:写一个脚本添加10个用户user1到user10,但要求只有用户不存在的情况下才能添加答案:#!/bin/bashfor I in `seq 1 10`;docut -d: -f1 /etc/passwd |grep "user$I" 2>>/tmp/etc.err || useradd user$Idone作业四:写一个脚本通过ping命令测试192.168.0.151到192.168.0.254之间的所有主机是否在线如果在线,就显示“ip is up”如果不在线,就显示“ip is down”答案: #!/bin/bashfor I in `seq 151 254`;doping -c1 -w1 192.168.0.$I &>/dev/null && echo "192.168.0.$I is up" || echo "192.168.0.$I is down"done例题:shell1.sh 显示日期和时间。
shell常见问题
非常好的十道Linux shell脚本面试题1、编写个shell脚本将当前目录下大于10K的文件转移到/tmp目录下#/bin/sh#Programm :# Using for move currently directory to /tmpfor FileName in `ls -l | awk '$5>10240 {print $9}'`domv $FileName /tmpdonels -al /tmpecho "Done! "2、编写shell脚本获取本机的网络地址。
比如:本机的ip地址是:192.168.100.2/255.255.255.0,那么它的网络地址是192.168.100.1/255.255.255.0方法一:#!/bin/bash#This script print ip and networkfile="/etc/sysconfig/network-scripts/ifcfg-eth0"if [ -f $file ] ;thenIP=`grep "IPADDR" $file|awk -F"=" '{ print $2 }'`MASK=`grep "NETMASK" $file|awk -F"=" '{ print $2 }'`echo "$IP/$MASK"exit 1fi方法二:#!/bin/bash#This programm will printf ip/network#IP=`ifconfig eth0 |grep 'inet ' |sed 's/^.*addr://g'|sed 's/ Bcast.*$//g'` NETMASK=`ifconfig eth0 |grep 'inet '|sed 's/^.*Mask://g'`echo "$IP/$NETMASK"exit3、用Shell编程,判断一文件是不是字符设备文件,如果是将其拷贝到/dev 目录下。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Shell 脚本面试题及答案
一、Shell脚本是什么、它是必需的吗?
一个Shell脚本是一个文本文件,包含一个或多个命令。
作为系统管理员,我们经常需要使用多个命令来完成一项任务,我们可以添加这些所有命令在一个文本文件(Shell 脚本)来完成这些日常工作任务。
二、什么是默认登录shell,如何改变指定用户的登录shell?
在Linux操作系统,“/bin/bash”是默认登录shell,是在创建用户时分配的。
使用chsh命令可以改变默认的shell。
三、可以在shell脚本中使用哪些类型的变量?
在shell脚本,我们可以使用两种类型的变量:①系统定义变量;②用户定义变量。
系统变量:是由系统系统自己创建的。
这些变量通常由大写字母组成,可以通过“set”命令查看。
用户变量:是由系统用户来生成和定义,变量的值可以通过命令“echo $<变量名>”查看。
四、如何将标准输出和错误输出同时重定向到同一位置?
这里有两个方法来实现:
方法一:2>&1 (如# ls /usr/share/doc > out.txt 2>&1 )
方法二:&> (如# ls /usr/share/doc &> out.txt )
五、shell脚本中“$?”标记的用途是什么?
在写一个shell脚本时,如果你想要检查前一命令是否执行成功,在if条件中使用“$?”可以来检查前一命令的结束状态。
六、如何在后台运行脚本?
在脚本后面添加“&”。
七、"chmod 500 script" 做什么?
使脚本所有者拥有可执行权限。
八、">" 做什么?
重定向输出流到文件或另一个流。
九、& 和 && 有什么区别
& - 希望脚本在后台运行的时候使用它;
&& - 当前一个脚本成功完成才执行后面的命令/脚本的时候使用它。
十、什么时候要在 [ condition ] 之前使用“if”?
当条件满足时需要运行多条命令的时候。
十一、' 和 " 引号有什么区别?
' - 当我们不希望把变量转换为值的时候使用它。
" - 会计算所有变量的值并用值代替。
十二、如何在脚本文件中重定向标准输出和标准错误流到 log.txt 文件?
在脚本文件中添加 " >log.txt 2>&1" 命令。
十三、${variable:-10} 和 ${variable: -10} 有什么区别?
${variable:-10} - 如果之前没有给 variable 赋值则输出 10;如果有赋值则输出该变量;
${variable: -10} - 输出 variable 的最后 10 个字符。
十四、shell脚本中break命令的作用?
break命令一个简单的用途是退出执行中的循环。
我们可以在while和until循环中使用break命令跳出循环。
十五、shell脚本中continue命令的作用?
continue命令不同于break命令,它只跳出当前循环的迭代,而不是整个循环。
continue命令很多时候是很有用的,例如错误发生,但我们依然希望继续执行大循环的时候。
十六、shell脚本中while循环语法?
如同for循环,while循环只要条件成立就重复它的命令块。
不同于for循环,while 循环会不断迭代,直到它的条件不为真。
十七、“#!/bin/bash”的作用?
#!/bin/bash是shell脚本的第一行,称为释伴(shebang)行。
这里#符号叫做hash,而! 叫做 bang。
它的意思是命令通过 /bin/bash 来执行。
十八、如何调试shell脚本?
使用'-x'参数(sh -x myscript.sh)可以调试shell脚本。
另一个种方法是使用‘-nv’参数( sh -nv myscript.sh)。
十九、shell脚本如何比较字符串?
test命令可以用来比较字符串。
测试命令会通过比较字符串中的每一个字符来比较。
二十、在shell脚本中,如何测试文件?
test命令可以用来测试文件。
基础用法如下表格:
Test 用法:
-d 文件名:如果文件存在并且是目录,返回true。
-e 文件名:如果文件存在,返回true。
-f 文件名:如果文件存在并且是普通文件,返回true。
-r 文件名:如果文件存在并可读,返回true。
-s 文件名:如果文件存在并且不为空,返回true。
-w 文件名:如果文件存在并可写,返回true。
-x 文件名:如果文件存在并可执行,返回true。
二十一、如何执行算术运算?
有两种方法来执行算术运算:
1、使用expr命令
# expr 5 + 2
2、用一个美元符号和方括号($[ 表达式 ])
例如:test=$[16 + 4] ; test=$[16 + 4]
二十二、在shell脚本如何定义函数呢?
函数是拥有名字的代码块。
当我们定义代码块,我们就可以在我们的脚本调用函数名字,该块就会被执行。