70 个 Shell 脚本面试问题和答案
我们为您的面试准备选择了预期的 70 个 shell 脚本问题和答案。对于所有系统管理员来说,了解脚本或至少基础知识真的很重要,这反过来有助于在您的工作环境中自动执行许多任务。在过去的几年里,我们已经看到所有的 linux 工作规范都需要脚本技能。
1)如何将参数传递给脚本?
./脚本参数
示例:脚本将显示文件名
./show.sh file1.txt
cat show.sh
#!/bin/bash
cat $1
2)如何在脚本中使用参数?
第一个参数:$1,
第二个参数:$2
示例:脚本将文件 (arg1) 复制到目标 (arg2)
./copy.sh file1.txt /tmp/
cat copy.sh
#!/bin/bash
cp $1 $2
3)如何计算传递参数的数量?
$#
4)如何在脚本中获取脚本名称?
$0
5)如何检查之前的命令是否运行成功?
$?
6)如何从文件中获取最后一行?
tail -1
7)如何从文件中获取第一行?
head -1
8)如何从文件的每一行中获取第三个元素?
awk '{print $3}'
9)如果第一个等于 FIND,如何从文件的每一行中获取第二个元素
awk '{ if ($1 == "FIND") print $2}'
10) 如何调试 bash 脚本
将 -xv 添加到 #!/bin/bash
例子
#!/bin/bash –xv
11)举个例子如何编写函数?
function example {
echo "Hello world!"
}
12)如何将字符串添加到字符串?
V1="Hello"
V2="World"
V3=$V1+$V2
echo $V3
输出
Hello+World
13)如何将两个整数相加?
V1=1
V2=2
let V3=$V1+$V2
echo $V3
输出
3
Remember you need to add "let" to line V3=$V1+$V2
then echo $V3 will give 3
if without let , then it will be
echo $V3 will give 1+2
14)如何检查文件系统上是否存在文件?
if [ -f /var/log/messages ]
then
echo "File exists"
fi
15)写下 shell 脚本中所有循环的语法?
循环:
for i in $( ls ); do
echo item: $i
done
while 循环:
#!/bin/bash
COUNTER=0
while [ $COUNTER -lt 10 ]; do
echo The counter is $COUNTER
let COUNTER=COUNTER+1
done
直到循环:
#!/bin/bash
COUNTER=20
until [ $COUNTER -lt 10 ]; do
echo COUNTER $COUNTER
let COUNTER-=1
done
16)每个脚本开头的#!/bin/sh 或#!/bin/bash 是什么意思?
该行告诉使用哪个 shell。#!/bin/bash 使用 /bin/bash 执行的脚本。如果是 python 脚本,会有 #!/usr/bin/python
17)如何从文本文件中获取第 10 行?
head -10 file|tail -1
18) bash 脚本文件中的第一个符号是什么
#
19)命令的输出是什么: [ -z "" ] && echo 0 || 回声 1
0
20)什么命令“export”?
在子shell中公开变量
21)如何在后台运行脚本?
在脚本末尾添加“&”
22) “chmod 500 脚本”是做什么的?
使脚本所有者可以执行脚本
23) “>”做什么?
将输出流重定向到文件或另一个流。
24) & 和 && 有什么区别
& - 当我们想要将脚本放到后台时使用它
&& - 当我们想要执行命令/脚本时,如果第一个脚本成功完成
25)当我们在 [条件] 之前需要 "if" 时?
如果条件满足,我们需要运行多个命令。
26)命令的输出是什么:name=John && echo 'My name is $name'
My name is $name
27) bash shell 脚本中用于注释的符号是什么?
#
28)命令的输出是什么: echo ${new:-variable}
variable
29) ' 和 " 引号之间有什么区别?
' - 我们在不想将变量评估为值时使用它
" - 将评估所有变量并分配其值。
30)如何将 stdout 和 stderr 流从脚本内部重定向到 log.txt 文件?
添加“exec >log.txt 2>&1”作为脚本中的第一个命令
31)如何仅使用 echo 命令获取部分字符串变量?
echo ${variable:x:y}
x - 起始位置
y - 长度
示例:
variable="我的名字是 Petras,我是开发人员。"
echo ${variable:11:6} # 将显示 Petras
32)仅当字符串变量=“User:123:321:/home/dir”给出时,如何使用echo 命令获取home_dir?
echo ${variable#*:*:*:}
或
echo ${variable##*:}
33)如何从上面的字符串中获取“用户”?
echo ${variable%:*:*:*}
或
echo ${variable%%:*}
34)如何列出 UID 小于 100 (awk) 的用户?
awk -F: '$3<100' /etc/passwd
35)编写程序,为用户计算唯一的主要组并仅显示计数和组名
cat /etc/passwd|cut -d: -f4|sort|uniq -c|while read c g
do
{ echo $c; grep :$g: /etc/group|cut -d: -f1;}|xargs -n 2
done
36)如何在 bash shell 中将标准字段分隔符更改为“:”?
IFS=“:”
37)如何获得可变长度?
${#variable}
38)如何打印变量的最后 5 个字符?
echo ${variable: -5}
39) ${variable:-10} 和 ${variable:-10} 有什么区别?
${variable:-10} - 如果在 ${variable: -10} 之前没有分配变量,则给出 10 - 给出
变量的最后 10 个符号
40)如何仅用 echo 命令替换部分字符串?
echo ${变量//模式/替换}
41)哪个命令将字符串替换为大写?
tr '[:lower:]' '[:upper:]'
42)如何计算本地账户?
wc -l /etc/passwd|cut -d" " -f1
或
cat /etc/passwd|wc -l
43)如何在没有 wc 命令的情况下计算字符串中的单词?
set ${string}
echo $#
44)哪个是正确的“export $variable”或“export variable”?
export variable
45)如何列出第二个字母为 a 或 b 的文件?
ls -d ?[ab]*
46)如何将整数 a 添加到 b 并分配给 c ?
c=$((a+b))
或
c=`expr $a + $b`
或
c=`echo "$a+$b"|bc`
47)如何从字符串中删除所有空格?
echo $string|tr -d " "
48)重写命令打印句子并将变量转换为复数:item="car";回声“我喜欢$item”?
item="car"; echo "I like ${item}s"
49)编写将打印从 0 到 100 的数字并每隔三分之一显示一次 (0 3 6 9 ...) 的命令?
for i in {0..100..3}; do echo $i; done
or
for (( i=0; i<=100; i=i+3 )); do echo "Welcome $i times"; done
50)如何打印提供给脚本的所有参数?
echo $*
or
echo $@
51) [ $a == $b ] 和 [ $a -eq $b ] 有什么区别
[ $a == $b ] - 应该用于字符串比较
[ $a -eq $b ] - 应该用于数字测试
52) = 和 == 之间有什么区别
= - 我们用来给变量赋值
== - 我们用来比较字符串
53)编写命令来测试 $a 是否大于 12 ?
[$a-gt 12]
54)编写命令来测试 $b 是否等于 12 ?
[ $b -le 12 ]
55)如何检查字符串是否以“abc”字母开头?
[[ $string == abc* ]]
56) [[ $string == abc* ]] 和 [[ $string == "abc*" ]] 有什么区别
[[ $string == abc* ]] - 将检查字符串是否以 abc 字母开头
[[ $string == "abc*" ]] - 将检查字符串是否完全等于 abc*
57)如何列出以 ab 或 xy 开头的用户名?
egrep "^ab|^xy" /etc/passwd|cut -d: -f1
58)什么$!意味着在 bash 中?
最近的后台命令 PID
59)什么$??
最近的前台退出状态。
60)如何打印当前shell的PID?
echo $$
61)如何获取传递给脚本的参数数量?
echo $#
62) $* 和 $@ 有什么区别
$* - 将所有传递给脚本的参数作为单个字符串
提供 $@ - 将所有传递给脚本的参数作为分隔列表提供.分隔符 $IFS
63)如何在 bash 中定义数组?
array=("Hi" "my" "name" "is")
64)如何打印第一个数组元素?
echo ${array[0]}
65)如何打印所有数组元素?
echo ${array[@]}
66)如何打印所有数组索引?
echo ${!array[@]}
67)如何删除 id 为 2 的数组元素?
unset array[2]
68)如何添加 id 为 333 的新数组元素?
array[333]="New_element"
69) shell 脚本如何获取输入值?
a) 通过参数
./script param1 param2
b) 通过读命令
read -p "Destination backup Server : " desthost
70)我们如何在脚本中使用“expect”命令?
/usr/bin/expect << EOD
spawn rsync -ar ${line} ${desthost}:${destpath}
expect "*?assword:*"
send "${password}\r"
expect eof
EOD
70 个 Shell 脚本面试问题和答案相关推荐
- 70个经典的 Shell 脚本面试问题
转载自:http://www.imooc.com/article/1131 1) 如何向脚本传递参数 ? ./script argument 例子: 显示文件名称脚本 ./show.sh file1. ...
- 70个经典的 Shell 脚本
参考: 阿里Linux Shell脚本面试25个经典问答 分享70个经典的 Shell 脚本面试题与答案 1) 如何向脚本传递参数 ? ./script argument 例子: 显示文件名称脚本 ? ...
- c中获取python控制台输出_linux c程序中获取shell脚本输出的实现方法
[转]Linux Shell脚本调试技术 本文转载自:https://www.ibm.com/developerworks/cn/linux/l-cn-shell-debug/ Shell脚本调试技术 ...
- shell for循环命令行_精心汇总的24道shell脚本面试题
虽然现在Python在运维工作中已经使用很普遍,但是很多企业在找Linux云计算工程师的时候还是会问到 shell 脚本的问题,它有助于你在工作环境中自动完成很多任务. 如下是一些面试过程中,经常会遇 ...
- shell for循环命令行_24 道 shell 脚本面试题
想要成为中高级phper, shell 脚本是需要掌握的,它有助于你在工作环境中自动完成很多任务. 如下是一些面试过程中,经常会遇到的 shell 脚本面试问题及解答: Q:1 Shell脚本是什么. ...
- linux脚本简介,Linux Shell脚本简介
Shell 诞生于 Unix,是与 Unix/Linux 交互的工具,单独地学习 Shell 是没有意义的,请先参考Unix/Linux入门教程,了解 Unix/Lunix 基础. 近几年来,Shel ...
- linux连接oracle的日志,linux shell脚本连接oracle查询数据插入文件和日志文件中
#!/bin/sh sqlplus "用户名/密码@数据库"< sqlplus "用户名/密码"< sqlplus -S "用户名/密码& ...
- shell 脚本练习 | 「题霸」面试必考真题【shell篇】题解
写在前面: 每道shell脚本练习题都可以使用while.for.do等循环配合read,printf的方式解题,通过这种编程式的思维解题(类似C语言,通过变量与函数解题).而shell中本身就提供了 ...
- Linux Shell脚本的10个有用的“面试问题和解答”
首先致上每日问候.Linux的浩瀚无垠,使人总能每次都提交与众不同的内容.我们"The-Tecmint-Team"的工作是给我们的读者提供一些独特的内容,这些内容不仅对他们的职业生 ...
最新文章
- c++ opencv mat 最大值,数据类型
- Java后台解析前台的get中文请求
- 贼好用的 Java 工具类库,GitHub 星标 10k+,你在用吗?
- java mouselistener,Java MouseListener接口
- java 按回车键查询
- Linux知识体系之路径属性与目录
- java分页的方法_java实现的分页方法(上一页下一页)
- 微信小程序如何快速累计独立访客(UV)不低于 1000
- 算法竞赛命题指南(命题流程、Polygon的使用等)
- 文件名字超出计算机无法删除,电脑文件名太长无法删除怎么办
- Tomat报错 The APR based Apache Tomcat Native library which allows optimal performance in production
- 阿里巴巴在知乎上又出事了
- print spooler打印服务启动后,自动停止的解决方法。
- 2022-2028全球踏步机测力计行业调研及趋势分析报告
- 【技术知识】SVAC 2.0安全技术浅析
- 新鲜的蔬菜和水果中富含抗氧化物,可以有效延缓衰老和疾病
- xmodem,ymodem,zmodem,kermit的主要区别
- 如何获取系统当前时间
- 多种乡村体验游盈利方式,助你撬动上千亿乡村旅游市场!
- [知乎]关于WindowsXPx64SP2系统的说明
热门文章
- 分享一个超大文件编辑器(WINDOWS 文本编辑器)
- 【Java】Java编译时错误:A JNI error has occurred, please check your installation and try again
- IPFS云服务器预售登录系统,ipfs 云服务器
- 华为云发布实时音视频行业加速器,为企业解决技术与商业双重难题
- Word中令人头疼的字体转换
- Fuchsia OS 将推送给所有第一代 Nest Hub 设备
- 精准DNA甲基化/羟甲基化测序(oxBS-seq)|易基因技术推介
- Android——扩大ImageButton的点击区域
- where 引导从句
- 《高考前夕时间旅行的可行性研究报告》