shell面试专题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell面试专题相关的知识,希望对你有一定的参考价值。

1、eval在shell中有什么作用?请举个例子说明?

   作用:

#!/bin/bash

aa=h1

bb=h2

var=(aa bb)

for vas in ${var[@]}

do

        echo $vas

        eval var_temp=\$${vas}

        echo $var_temp

done


2、dirname有什么作用?请举个例子说明?

   作用:获取当前脚本路径 

   例子:

    #!/bin/bash

cd `dirname $0`

pwd;ls


3、ssh -o stricthostkeychecking=no -o ConnectTimeout=60  分别代表什么意思?

   ssh加接时不需要输入key检查,然后六十秒为超时时间


4、说一下-n -z -d -f -e -r -w -x -l !-z在shell中分别代表什么意思?-n和-z试举一个例子说明

   -n 非空为真 

   -z 字符串为空为真 

   -d 是目录且存在为真 

   -f 是普通文件且存在为真 

   -e 存在为真

   -r 可读为真

   -w 可写为真

   -x 可执行为真

  -l 是链接为真

   !-z不为空

   1)-n例子:

   JavaApp=($(ps aux | grep "java" | grep "/app/guaji"))

   if [ -n "${JavaApp[0]}" ];then

    echo -e "\033[1;31m 脚本退出 \033[0m"

    exit 1

    fi

   2)-z例子:

   ssh=$(ssh -o StrictHostKeyChecking=no $2 "ls /")

   if [[ -z "$ssh" ]];then

echo -e "\033[1;31m \033[5m 远程主机($2)无法连接,脚本退出. \033[0m"

exit 1

   fi


5、正则表达式的 "|"、"\n"、"\r"、"\t"分别代表什么意思

|表示或的意思

         \n表示换行,将当前位移置下行开头

  \r回车,将当前位置移至本行开头 


6、写出获取公网IP的两种方法

ifconfig | grep -Po "(?<=addr:).*(?=Bcast)" | egrep -v ‘^192.168|^172.1[6-9].|^172.2[0-9].|^172.3[0-1].|^10.|^127.‘

        /sbin/ifconfig | awk -F‘[ :]+‘ ‘/inet addr:/ {print $4}‘ | egrep -v ‘^192.168|^172.1[6-9].|^172.2[0-9].|^172.3[0-1].|^10.|^127.‘


7、$$表示什么意思?

   获取当前执行脚本的进程名  


8、函数内的local是什么意思?举一脚本例子说明

   脚本中局部变量,存在于脚本函数(function)中的变量称为局部变量,要以local方式进行声明,使之只在本函数作用域内有效,

   防止变量在函中的命名与变量外部程序中变量重名造成程序异常,下面是一脚本例子:

   #!/bin/sh

   a() {

        local s=1

        echo $s

    }

   b() {

        s=2

        echo $s

}

s=0

a

echo $s

b

echo $s


9、[email protected]和$*的区别

   [email protected]将命令行每个参数视为单独的字符串,等同于"$1"、"$2"、"$3"

   $*将所有的命令行所有参数视为单个字符串,等同于"$1$2$3"


10、$0、dirname和basename有什么作用?

    dirname获取脚本路径名

    basename获取脚本名

    $0获取脚本路径和脚本名

 

11、取出3306端口号这个数字

    netstat -tlnp| grep 3306 | awk ‘[ :]+‘ ‘{print $5}‘ #[ :]+ 以空格和点为分隔符,这种分隔符有一个或多个


12、shell中单引号和双引号与不加与号分别代表什么意思

    单引号:可以说是所见即所得,即将单号引号的内容原样输出

    双引号:把双引号的内容输出出来,如果内容中有命令、变量等,会先把变量、命令解析出结果,然后再输出最终内容来

    无引号:把内容输出出来,会将含有空格的字符串视为一个整体输出,如果内容中有命令、变量等,会先把变量、命令解析出结果,

            然后再输出内容来,如果字符串中带有空格等特殊字符,则不能完整的输出,需要改加双引号,一般连续的字符串,数字

            路径等可以不加任何引号,不过最好用双引号替代之


13、echo -n 是什么意思?举一脚本例子显示他的功能

    -n不换行

       #!/bin/bash

. /etc/init.d/functions

echo "---------Please wait while we are checking-------------"

echo -n "6秒后执行该操作."

for ((i=0;i<6;i++))

do

       echo -n ".";sleep 2

        #[ $i -eq 3 ] && break

done

echo 

action "test success" /bin/true


14、echo -e "\n" | nohup ping www.baidu.com > filename 2>&1 &这里的-e 和 "\n" 是什么意思?

    -e是代表后面输入的内容包含特珠字符需要加的参数

    \n 是代表换行

  

15、有1-9的数字,echo输出1-9的数字时,屏蔽0-5的数字再输出

    echo ‘1234567890‘ | sed ‘s/[0-5]//g‘


16、用nohup把一个脚本放在后台运行

    nohup sh test.sh > filename 2>&1 &

 

17、用seq打印10以空格分隔,用seq坚着打印10到1

    seq -s " " 10

    seq 10 -1 1


18、curl -I -s www.baidu.com | head -1 | wc -l 中的-I和-s代表什么意思

    -s 沉默或安静模式。不显示进度表或错误消息。使卷曲静音

    -I  只读取HTTP头! HTTP的服务器功能命令HEAD此用来获取  

    --connetct-timeout 2 2秒连接超时

 

19、wget -T 10 -c -q --spider www.baidu.com 这些参数分别代表什么意思?

    -T 超时10少

    -c 断点续传 

    -q 为执行命令时屏蔽他打印输出的意思,执行命令不会任何内容出来

    --spider wget命令加spider参数不会下载任何东西,spider的主要作用是测试下载链接。

    tries

20、生产环境常用的监控web的方法是哪种

    用wget或curl的方法作监控


21、生产环境写脚本报错就发邮件的命令是怎么样的

    mail -s "uname -n ‘s httpd status is on" [email protected] < $logfile


22、给文件改名

    mv $file 1linux-`echo $file | cut -d "-" -f2`   #详情看老男孩shell第三天文档,只动变量,静态不动

    ls *.jpg | awk -F ‘_finished‘ ‘{print "mv " " $0" "$1".jpg"}‘ | bash


23、查看当前目录的所有文件夹

    ls -F | grep /


24、查看192.168.1.0/24网段的主机有没有在线


25、awk中的NF代表什么意思?

    NF代表结尾的意思


本文出自 “wsyht的博客” 博客,请务必保留此出处http://wsyht2015.blog.51cto.com/9014030/1786895

以上是关于shell面试专题的主要内容,如果未能解决你的问题,请参考以下文章

学java需要C语言基础知识,实战解析

java基础入门黑马程序员第二版,万字长文!

2020最新Java面试题集合,朋友圈疯传,知乎过万点赞

Redis面试专题

含泪刷128道面试题,50万字2022最新Android11位大厂面试专题

撒花,2022Android最新面试专题:完结篇