脚本面试题

脚本面试题
1)一个linux进程经历的个阶段
等待:linux进程等待资源;
运行:linux进程当前正在执行中
停止:linux进程在成功执行后或杀死进程信号后停止
停尸:该进程已经结束,但仍然留在进程表中
2)cut命令
截取文件的指定部分并打印到标准输出
cut -d 指定切割符
cut -f 组定截取的段数
[root@server3 extmail]# hostname
server3.example.com
[root@server3 extmail]# hostname| cut -d . -f 2
example

3)cmp和diff区别
Diff 为了使两个文件一样的应该做的修改
Cmp 将两个文件通字节对比,并报告一个不匹配项。

4)可以用echo命令代替ls命令吗
可以. Ls 命令可以用echo命令来代替
Ls列出目录内容,从替换的角度上讲,可以使用 echo *,两个输出结果一样

5)听说过inode吗
Inode是一个数据结构,在linux上用于目录和文件的标识,每个文件在linux上有一个独立的inode和一个唯一的inode号
对于系统来说,文件名只是inode号码便于识别的别称或者绰号,表面上,用户通过文件名,打开文件,。实际上,系统内部这个过程分成三步;首先,系统找到这个文件名对应的inode号码;其次通过inode号码,获取inode信息;最后,根据inode信息,找到文件数据所在的block,读出数据。
Ls -i 命令列出目录的整个文件,即文件号和inode号码
[root@server3 mnt]# ls -i 2.sh
11907 2.sh
[root@server3 mnt]# ls -i 3.sh
11965 3.sh

6)shell脚本成功执行之前,如何中断脚本的执行
Exit命令。 Exit命令被强制输出非0值,脚本会报错并退出。0表示成功执行,因此脚本终止执行前执行一个不带引号的 exit -1 命令会使脚本终止。
7)移除文件头
删除文件 sed ‘1 d’ file
了解sed awk命令

8)检查一个文件的某行长度
Sed -n ‘n p ’ file | wc -l

9)可以在linux上查看所有非打印字符
打开vi编辑器,按esc健,然后按:进入命令模式。在命令交界处输入 set list命令并执行
10)创建一个目录,该组的人能在该目录下创建或访问文件,但除了该文件创建者其他人不能删除
Chmod g+wx /mnt/
Chmod +t /mnt/

了解o+t g+s命令

11)如何向脚本传输

$* 获取当前脚本的所有参数
$# 获取当前脚本的参数的总和
$@ 这个程序的所有参数$1 $2 $3 $4 $5.., 这是激昂参数传送给其他程序的最佳方式,因为他将会保留所有內嵌在每个参数里的任何空白

$$ 获取当前shell进程的PID
$! 获取执行上一条指令的PID
$? 获取执行上一条指令的返回值

$* 将所有命令的所有参数视为单个字符串 等同于“$1 $2 $3”
$@ 将命令每个参视为单独的字符串,等同于“$1” “$2” “$3”,这是将参数传递其他程序的最佳方式,因为他会保留所有内嵌在每个参数里面的任何空白。

12)如何计算传进来的参数
$#

13)如何检查之前的命令是否成功执行?
$?

14)如何获取一个文件每一行的第三个元素
Awk ‘{print $3}’

15)假如文件中第一个元素时FIND,如何获取第二个元素
| awk ‘{if ($$1 == ‘FIND’)} ’ print $2}’

16)如何调试bash脚本
将 -xv 参数加到 #!/bin/bash
如 #! /bin/bash -xv

17)如何写一个函数
Funnction example {

}

18)如何连接两个字符串
V1= v2= v3=${v1}${v2}

19)写出shell脚本中所有的循环
For 循环
For i in $(ls)
Do
Echo “ ”
Done

While循环
Until循环
[root@server3 mnt]# cat 6.sh

!/bin/bash

count=20
until [ $count -lt 10 ]
do
count=$(($count - 1))
done
echo "$count"

20)每个脚本的#!/bin/bash什么意思
脚本开头的第一行
一个规范的shell脚本的第一行会指出由那个程序来执行脚本的内容.

!/bin/bash

!为幻数,在执行脚本的时候,内核会根据它来确定哪个程序来解释脚本中的内容.如果脚本开头不指定解释器,那么就要用对应的解释器来执行脚本.

Bash test.sh
Python test.py

21)如何获取第十行
了解sed 用法

22)命令export作用
使变量在子shell中也可以用

23)如何在后台运行脚本
脚本后面添加&
了解后台的运行

24)chmod 500 scripts 作用
使脚本所有者拥有可执行的权限

25)> 做什么
重定向流到文件

26)& 和&&区别
& 希望脚本后台运行时使用它
&& 当前一个脚本成功完成以后执行后面的命令

27)什么时候要在【condition】之前使用if
当条件满足时需要运行多条命令的时候

28)执行name=jono && echo 'my name is $name'的输出
[root@server3 mnt]# name=jono && echo 'my name is $name'
my name is $name

29)命令echo ${new:-variable}的输出
[root@server3 mnt]# echo ${new:-variable}
variable

了解字符串的操作

30)‘ 和 “ 区别
‘ 不希望把变量转换为值时使用它
“ 会计算所有变量的值并用值代替

单引号;所见及所得.即将单引号里内容原样输出
双引号:把双引号里面内容输出出来,如果内容中有命令,变量等,会先把命令,变量解释出来,然后输出最终内容.

31)如何在脚本中重定向标准输出和标准错误
Exec > log.txt 2>&1

了解重定向

32)如何只用echo 命令获取字符串变量的一部分
Echo ${variable ;x:y}

33)如何计算本地用户的数目
[root@server3 mnt]# wc -l /etc/passwd | cut -d " " -f 1
23

34)列出UID小于100
Awk -F: ‘$3 < 100’ /etc/passwd

35)如何打印变量最后5个字符
| echo ${variable : -5}

36)${variable:-10} 和 ${variable: -10} 前者如果之前没有给赋值则输出10,如果赋值理论则输出改变,后者输出varible最后10个字符

37)了解tr 替换命令

38)expore $variable 或 export variable 哪个正确
后者正确

39)如何列出第二个字母是a 或b 文件
ls -d ?[ab]*

40)写出0~100中3的倍数
[root@server3 mnt]# cat m7.sh

!bin/bash

for i in {0..100..3}
do
echo $i
done

41)【$a = $b】 和 【$a -eq $b】区别
前者用于字符串的比较,后者拥有数字的比较

51)= 和 ==区别
前者用于变量赋值,后者用于字符串比较。
52)如何在shell中更改标准的域分隔符为 :
| IFS=“:”

53)如何去除字符串的所有空格
| echo $string | tr -d “ ”

54)重写这个命令,将输出变量转换为复数
55)如何输出当前shell的PID
[root@server3 mnt]# echo $$
1060

56)如何在bash 中定义数组
[root@server3 mnt]# arrary=("hi" "my" "name")

57)如何打印数组的第一个元素
[root@server3 mnt]# echo ${arrary[0]}
hi
58)如何打印数组的所欧元素
[root@server3 mnt]# echo ${arrary[@]}
hi my name
59)如何输出数组的索引
[root@server3 mnt]# echo ${!arrary[@]}
0 1 2

60)如何移除数组的索引为2的元素
[root@server3 mnt]# unset arrary[2]

61)如何在数组中添加ID为333的元素
[root@server3 mnt]# arrary[333]="new_pp"

了解数组的相关知识。

转载于:https://www.cnblogs.com/hanfei-1005/p/5708298.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值