70个经典的 Shell 脚本面试问题.docx

上传人:b****2 文档编号:18178730 上传时间:2023-04-24 格式:DOCX 页数:9 大小:17.70KB
下载 相关 举报
70个经典的 Shell 脚本面试问题.docx_第1页
第1页 / 共9页
70个经典的 Shell 脚本面试问题.docx_第2页
第2页 / 共9页
70个经典的 Shell 脚本面试问题.docx_第3页
第3页 / 共9页
70个经典的 Shell 脚本面试问题.docx_第4页
第4页 / 共9页
70个经典的 Shell 脚本面试问题.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

70个经典的 Shell 脚本面试问题.docx

《70个经典的 Shell 脚本面试问题.docx》由会员分享,可在线阅读,更多相关《70个经典的 Shell 脚本面试问题.docx(9页珍藏版)》请在冰豆网上搜索。

70个经典的 Shell 脚本面试问题.docx

70个经典的Shell脚本面试问题

1)如何向脚本传递参数?

./scriptargument

例子 :

显示文件名称脚本

./show.shfile1.txt

catshow.sh

#!

/bin/bash

cat$1

2)如何在脚本中使用参数?

第一个参数:

$1,第二个参数:

$2

例子:

脚本会复制文件(arg1)到目标地址(arg2)

./copy.shfile1.txt/tmp/

catcopy.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)举例如何写一个函数?

functionexample{

echo"Helloworld!

"

}

12)如何向连接两个字符串?

V1="Hello"

V2="World"

V3=$V1+$V2

echo$V3

输出

Hello+World

13)如何进行两个整数相加?

V1=1

V2=2

V3=$V1+$V2

echo$V3

输出

3

14)如何检查文件系统中是否存在某个文件?

if[-f/var/log/messages]

then

echo"Fileexists"

fi

15)写出shell脚本中所有循环语法?

for循环:

foriin$(ls);do

echoitem:

$i

done

while循环:

#!

/bin/bash

COUNTER=0

while[$COUNTER-lt10];do

echoThecounteris$COUNTER

letCOUNTER=COUNTER+1

done

until循环:

#!

/bin/bash

COUNTER=20

until[$COUNTER-lt10];do

echoCOUNTER$COUNTER

letCOUNTER-=1

done

16)每个脚本开始的#!

/bin/sh或#!

/bin/bash表示什么意思?

这一行说明要使用的shell。

#!

/bin/bash表示脚本使用/bin/bash。

对于python脚本,就是#!

/usr/bin/python。

(LCTT译注:

这一行称之为释伴行。

17)如何获取文本文件的第10行?

head-10file|tail-1

18)bash脚本文件的第一个符号是什么

#

19)命令:

[-z""]&&echo0||echo1的输出是什么

0

20)命令“export”有什么用?

使变量在子shell中可用。

21)如何在后台运行脚本?

在脚本后面添加“&”。

22)“chmod500script”做什么?

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

23)“>”做什么?

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

24)&和&&有什么区别

∙&–希望脚本在后台运行的时候使用它

∙&&–当前一个脚本成功完成才执行后面的命令/脚本的时候使用它

25)什么时候要在[condition]之前使用“if”?

当条件满足时需要运行多条命令的时候。

26)命令:

name=John&&echo‘Mynameis$name’的输出是什么

Mynameis$name

27)bashshell脚本中哪个符号用于注释?

#

28)命令:

echo${new:

-variable}的输出是什么

variable

29)‘和”引号有什么区别?

∙‘–当我们不希望把变量转换为值的时候使用它。

∙”–会计算所有变量的值并用值代替。

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

在脚本文件中添加“exec>log.txt2>&1″命令。

31)如何只用echo命令获取字符串变量的一部分?

echo${variable:

x:

y}

x-起始位置

y-长度

例子:

variable="MynameisPetras,andIamdeveloper."

echo${variable:

11:

6}#会显示Petras

32)如果给定字符串variable=”User:

123:

321:

/home/dir”,如何只用echo命令获取home_dir?

echo${variable#*:

*:

*:

}

echo${variable##*:

}

33)如何从上面的字符串中获取“User”?

echo${variable%:

*:

*:

*}

echo${variable%%:

*}

34)如何使用awk列出UID小于100的用户?

awk-F:

'$3<100'/etc/passwd

35)写程序为用户计算主组数目并显示次数和组名

cat/etc/passwd|cut-d:

-f4|sort|uniq-c|whilereadcg

do

{echo$c;grep:

$g:

/etc/group|cut-d:

-f1;}|xargs-n2

done

36)如何在bashshell中更改标准的域分隔符为“:

”?

IFS=":

"

37)如何获取变量长度?

${#variable}

38)如何打印变量的最后5个字符?

echo${variable:

-5}

39)${variable:

-10}和${variable:

-10}有什么区别?

∙${variable:

-10}–如果之前没有给variable赋值则输出10

∙${variable:

-10}–输出variable的最后10个字符

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

echo${variable//pattern/replacement}

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”或“exportvariable”哪个正确?

exportvariable

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”;echo“Ilike$item”?

item="car";echo"Ilike${item}s"

49)写出输出数字0到100中3的倍数(0369…)的命令?

foriin{0..100..3};doecho$i;done

for((i=0;i<=100;i=i+3));doecho"Welcome$itimes";done

50)如何打印传递给脚本的所有参数?

echo$*

echo$@

51)[$a==$b]和[$a-eq$b]有什么区别

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

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

52)=和==有什么区别

∙=–用于为变量复制

∙==–用于字符串比较

53)写出测试$a是否大于12的命令?

[$a-gt12]

54)写出测试$b是否小于等于12的命令?

[$b-le12]

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$#

(LCTT译注:

和第3题重复了。

62)$*和$@有什么区别

∙$*–以一个字符串形式输出所有传递到脚本的参数

∙$@–以$IFS为分隔符列出所有传递到脚本中的参数

63)如何在bash中定义数组?

array=("Hi""my""name""is")

64)如何打印数组的第一个元素?

echo${array[0]}

65)如何打印数组的所有元素?

echo${array[@]}

66)如何输出所有数组索引?

echo${!

array[@]}

67)如何移除数组中索引为2的元素?

unsetarray[2]

68)如何在数组中添加id为333的元素?

array[333]="New_element"

69)shell脚本如何获取输入的值?

a)通过参数

./scriptparam1param2

b)通过read命令

read-p"DestinationbackupServer:

"desthost

70)在脚本中如何使用“expect”?

/usr/bin/expect<

spawnrsync-ar${line}${desthost}:

${destpath}

expect"*?

assword:

*"

send"${password}/r"

expecteof

EOD

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 财务管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1