shell常用命令面试,shell面试题详解

shell常用命令面试,shell面试题详解,非常好的12道shell命令经典面试问题

果壳面试问题总结了一些,一起来看看吧。是一个非常好的12个shell命令的经典面试问题。有需要的朋友可以参考一下。

下面是面试过程中经常遇到的一些贝壳剧本面试问答。

了解脚本,或者至少了解基本知识,对于测试工程师来说是必不可少的,这也有助于您在工作环境中自动化许多任务。

你会发现现在大部分测试工程师的招聘要求都是需要基本的linux技能和基本的Shell脚本技能。

下面是一些常见的Shell脚本面试问题。

1.文本分析

取出密码中shell出现的次数。

第一种方法的结果是:

4个/箱/桶

1/箱/同步

1 /sbin/halt

31 /sbin/nologin

1/sbin/关机

第二种方法的结果:

/bin/sync 1

/bin/bash 1

/sbin/nologin 30

/sbin/halt 1

/sbin/shutdown 1

2.提出

员工档案记录了工号和姓名。

员工. txt:

100詹森史密斯

200号无名氏

桑贾伊古普塔300号

400 Ashok Sharma

奖金档案记录工号和工资。

bonus.txt:

100 $5,000

200 $500

300 $3,000

400 $1,250

这两个文件需要合并并输出如下

处理结果:

400 Ashok Sharma 1250美元

100杰森史密斯5000美元

200个无名氏500美元

300桑杰古普塔3000美元

3.打印这台机器的交换分区大小。

处理结果:

互换:1024M

4.用户清洁

清除除当前登录用户之外的该机器的所有用户。

处理结果:

23:00:17上升1:08,1个用户,平均负载:0.02,0.05,0.02

登录@ IDLE JCPU PCPU WHAT的用户TTY

根pts/1 192 . 168 . 1 . 100 22:15 0.00s 10.75s 0.00s w

这台机器里就剩你一个人了:)

5.5.root用户今天登录了多长时间?

处理结果:

今天的超级用户登录:0.06小时

6.打印当前sshd的端口和进程id

处理结果:

sshd端口编号:22 5412

7.输出这台机器创建20000个目录所用的时间。

处理结果:

真正的0m3.367s

用户0m0.066s

sys 0m1.925s

8.打印root可以使用的可执行文件的数量

处理结果:

鲁特的垃圾箱:2306

9.编写一个shell脚本,将当前目录中大于10K的文件转移到/tmp目录中。

#/bin/sh

#程序:

#在` ls l | awk $510240 {print $9}` do中使用for将当前目录移动到文件名的/tmp

mv $ FileName/tmp Done ls al/tmp echo Done!

10.编写一个shell脚本来获取这台机器的网络地址。

例如,如果这台计算机的ip地址是192.168.100.2/255.255.255.0,那么它的网络地址就是192.168.100.1/255.255.255.0。

方法1:

#!/bin/bash

#此脚本打印ip和网络

file=/etc/sys config/network scripts/ifcfgeth 0 if[f $ file]然后

IP=` grep IP addr $ file | awk F = { print $ 2 } ` MASK=` grep net MASK $ file | awk F = { print $ 2 } ` echo $ IP/$ MASK exit 1 fi

11.使用Shell编程来确定一个文件是否是字符设备文件,如果是,就将其复制到/dev目录。

参考程序:

#!/bin/sh文件名=

echo "输入文件名:"读取文件名if [ c $FILENAME ]然后

cp $文件名/开发文件

12.设计一个shell程序,添加一个新组class1,然后添加属于该组的30个用户。用户名的格式是stdxx,其中xx是从01到30。

参考答案:

#!/bin/sh

i=1

groupadd class1 while [ $i le 30 ] do

if [ $i le 9 ]那么USERNAME=stu0${i} else

USERNAME=stu${i} fi

用户添加$用户名mkdir/home/$用户名

chown R $ USERNAME/home/$ USERNAME chgrp R class 1/home/$ USERNAME I=$(($ I 1))完成

一些经典的Shell脚本面试问题

1.如何在脚本中使用参数?

第一个参数:$1,第二个参数:$2

示例:脚本将文件(arg1)复制到目标地址(arg2)。/copy.sh file1.txt /tmp/

cat copy.sh

#!/bin/bash

消费品价格1美元2美元

2.如何计算传入的参数?

$#

3.如何检查前面的命令是否运行成功?

$?

4.我如何得到文件的最后一行?

尾巴-1

5.如何获取文件的第一行?

标题-1

6.如何获取一个文件每行的第三个元素?

awk“{ print $ 3 }”

7.如果找到文件中每行的第一个元素,如何得到第二个元素?

awk“{ if($ 1== FIND )print $ 2 }”

8.如何调试bash脚本

将-xv参数添加到#!之后/垃圾桶/bash

示例:

#!/bin/bashXV

9.举个如何写函数的例子?

函数示例{

回声“你好,世界!”

}

10.如何将两根弦连接到?

V1=你好

V2=世界

V3=${V1}${V2}

回显$V3

输出

HelloWorld

1.如何将两个整数相加?

V1=1

V2=2

让V3=$V1 $V2

回显$V3

输出

12.如何检查文件系统中是否存在文件?

if [ -f /var/log/messages ]

然后

回显文件存在

船方不负担装货费用

13.写出shell脚本中所有的循环语法?

For循环:

foriin美元(ls);做

回显项目:$i

完成的

While循环:

#!/bin/bash

计数器=0

while[$ COUNTER-lt 10];做

echo计数器是$COUNTER

让计数器=计数器1

完成的

直到循环:

#!/bin/bash

计数器=20

直到[$ COUNTER-lt 10];做

回声计数器$COUNTER

让计数器等于1

完成的

14.#在每个剧本的开头!/bin/sh或者#!/bin/bash是什么意思?

这一行描述了要使用的shell。#!/bin/bash表示脚本使用/bin/bash。对于python脚本来说,是#!/usr/bin/python .

15.如何获取文本文件的第10行?

头10档|尾1档

16.bash脚本文件的第一个符号是什么?

#

17.命令:[-z ]echo 0 | | echo 1的输出是什么?

0

18.我如何在后台运行脚本?

nohup命令

19.“chmod 500script”是做什么的?

让脚本所有者拥有可执行权限。

20.“”是做什么的?

将输出流重定向到文件或另一个流。

21.和有什么区别

-我希望脚本在后台运行时使用它

-在执行以下命令/脚本之前,当前面的脚本成功完成时使用它。

22.bash shell脚本中的哪个符号用于注释?

#

23.引号和引号有什么区别?

-当我们不想将变量转换为值时使用它。

-将计算所有变量的值并用值替换它们。

24.如何在脚本文件中将标准输出和标准错误流重定向到log.txt文件?

将“execlg.txt21”命令添加到脚本文件中。

25.如何仅用echo命令获取字符串变量的一部分?

echo ${variable:x:y}

x-起始位置

y长度

示例:

variable=我叫佩特拉什,我是一名开发人员

Echo ${variable:11:6} #将显示佩特拉什

26.如何使用awk列出UID小于100的用户?

awk -F: $3100 /etc/passwd

27.写一个程序来计算用户的主组数,并显示时间和组名。

cat/etc/passwd | cut-d:-F4 | sort | uniq-c | while read c g

{ echo $ c;grep:$ g:/etc/group | cut-d:-f1;}|xargs -n 2

完成的

28.我如何得到可变长度?

${#variable}

29.如何打印一个变量的后5个字符?

echo ${variable: -5}

30.如何只用echo命令替换字符串的一部分?

echo $ {变量//模式/替换}

31.如何计算本地用户数?

Wc -l /etc/passwd|cut -d -f1或cat /etc/passwd|wc -l

32.如何在没有wc命令的情况下计算一个字符串的字数?

设置${string}

echo $#

33.如何列出第二个字母是A或B的文件?

ls -d?[ab]*

34.怎么把整数A加到B上,赋给C?

c=$((a b))

或者

c=`expr $a $b

或者

c=`echo $ a $ b | bc

35.如何去掉字符串中的所有空格?

echo $string|tr -d

36.编写命令以输出数字0到100中3的倍数(0 3 6 9…)。

对于{ 0 }中的I.100.3};do echo $ I;完成的

或者

for((I=0;i=100I=I ^ 3));请重复“欢迎$i次”;完成的

37.如何打印传递给脚本的所有参数?

回声$*

或者

echo $@

38.[$ a==$ b]和[$a -eq $b]有什么区别

[$ a==$ b]-用于字符串比较

[$ a-eq $ b]-用于数字比较

39.=和==有什么区别

=-用于给变量赋值

==-用于字符串比较

40.写命令测试$a是否大于12?

[ $a -gt 12 ]

41.如何检查字符串是否以字母“abc”开头?

[[ $string==abc* ]]

42.[[$ string==ABC *]]和[[ $string==abc* ]]有什么区别?

[[$ string==abc *]]-检查字符串是否以字母ABC开头。

[[$ string== abc ]]-检查字符串是否完全等于ABC。

43.如何列出以ab或xy开头的用户名?

egrep ^ab|^xy/etc/passwd | cut-d:-f1

44.$ in bash!这是什么意思?

最近在后台执行的命令的PID。

45.$?这是什么意思?

最近的前台命令的结束状态。

46.如何输出当前shell的PID?

echo $$

47.$ *和$ @有什么区别

$ *-将传递给脚本的所有参数作为字符串输出

$ @-列出所有传入脚本的参数,用$IFS作为分隔符

48.如何在bash中定义数组?

array=(Hi myname is )

49.如何打印数组的第一个元素?

echo ${array[0]}

50.如何打印一个数组的所有元素?

echo ${array[@]}

51.如何输出所有数组索引?

echo ${!数组[@]}

52.shell脚本如何获取输入值?

a)传递参数。/script参数1参数2

b)通过读命令

“read -p”目标备份服务器:“desthost

shell常用命令面试,shell面试题详解