shell脚本——全国海关信息中心面试前准备

现在2018年5月8日周二,5月11日周五,我将去面试,尤其强调了shell脚本用于管理linux系统运行。以下是复习过程。

参考

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

细枝末节

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

awk'{print $3}'

2假如文件中每行第一个元素是 FIND,如何获取第二个元素

awk'{ if ($1 == "FIND") print $2}'

3 如何调试 bash 脚本

将 -xv 参数加到 #!/bin/bash 后

例子:

#!/bin/bash –xv

4 如何向连接两个字符串 ?

V1="Hello"
V2="World"
V3=${V1}${V2}
echo $V3

$VAR
最好VAR在定义的时候,采用VAR="abcdefg" 这种带引号的定义。
${VAR}
这种写法比较规范,VAR在定义的时候,采用VAR=abcdefg 这种不带引号的定义也没有关系。

5 shell中$(( ))与$( )还有${ }的区别
$()  与` ` 都是用来做命令替换。 command1 $(command2 $(command3))

${}  用来做变量替换,$var 与 ${var}作用相同,推荐使用${var},这更精确

$(())  用来做整数运算 + - * 、  %  &  | 
        如 echo $(( (a+b)% 4 ))


6  [  ] 与  [[  ]]的区别
 [  ]  等同于test 如if [ condition ] 

[[  ]]  使用[[ ... ]]条件判断结构,而不是[ ... ],能够防止脚本中的许多逻辑错误。比如,&&、||、<和> 操作符能够正常存在于[[ ]]条件判断结构中,但是如果出现在[ ]结构中的话,会报错。比如可以直接使用if [[ $a != 1 && $a != 2 ]], 如果不使用双括号, 则为if [ $a -ne 1] && [ $a != 2 ]或者if [ $a -ne 1 -a $a != 2 ]。

if ($i<5)    
if [ $i -lt 5 ]    
if [ $a -ne 1 -a $a != 2 ]    
if [ $a -ne 1] && [ $a != 2 ]    
if [[ $a != 1 && $a != 2 ]]    
     
for i in $(seq 0 4);do echo $i;done    
for i in `seq 0 4`;do echo $i;done    
for ((i=0;i<5;i++));do echo $i;done    
for i in {0..4};do echo $i;done    


7 命令:[ -z "" ] && echo 0 || echo 1 的输出是什么

0

shell中正确执行为0,否则就是非0.

8 如何在后台运行脚本 ?

在脚本后面添加 “&”。

据 @kashu 的意见,更好的答案是:

nohup command&

& 与nohup的区别
xx.sh  &
会将任务放到后台运行,一旦退出当前登录或者断开ssh连接,任务就停止

而nohup是在退出登录和关闭终端后仍然能够继续任务。

一般用法:
nohup command &

9 双引号与单引号的区别
"  "  弱引用  可实现变量和命令的替换
'  '  强引用,不完成变量替换
var=asd
echo " $var"  --> asd
echo ' $var'  ---> $var

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

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

cut : 选取指定字符并输出
-d 指定分隔符
-f  指定位置
 
cat test2.txt

No;Name;Mark;Percent
01;tom;69;91
02;jack;71;87
03;alex;68;98

cut -f2 -d";" test2.txt
结果:
Name
tom
jack
alex


11 如何输出当前 shell 的 PID ?

echo $$


战场练兵

你可能感兴趣的:(shell脚本——全国海关信息中心面试前准备)