果壳面试问题总结了一些,一起来看看吧。是一个非常好的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