本站教程收集整理的这篇文章主要介绍了Shell编程面试题,本站教程本站觉得挺不错的,现在分享给大家,也给大家做个参考。
sHell习题
求100以内之和的sHell脚本
#!/bin/bash #Author Wangweigang #Create Time 2018-11-06 #Name sum 1-100 sum=0 for i in `seq 1 100` do sum=$[$i+$sum] done echo $su
计算使用的内存使用量
#/bin/bash free=$(free |awk ‘NR==2{print ($3)/$2*100"%"}‘) if [ ${free%.*} -ge 10 ];then echo "内存使用大于10,现在内存为$free" else echo "内存为 $free" fi
SHell练习题目
1.按照时间生成文件2018-05-22.log
将每天的磁盘使用状态写入到对应的文件
#3.将.bak还原.txt
find /BACkup/ -type f -name “.bak” >/tmp/2.txt
for i in $(cat /tmp/2.txt)
do@H_426_19@mv $i ${i%.}
done
5.写一个脚本,判断本机80端口(假如服务为httpd)是否开启,如果开启什么都不干,如果发现端口不存在,那么重启一下http服务,并发邮件通知自己,脚本写好后可以每分钟执行一次,也可以写一个死循环
>分析 1.检测80端口是否正常 netstat -lntp|grep ":80" 2.如果不正常则重启@R_419_5158@ 3.如果进程是启动的则重启,否则直接启动 status=$(netstatu -lntp )
[[email?protected] scripts]# cat status_httpd.sh #!/bin/bash export PATH=$PATH #写一个脚本,判断本机80端口(假如服务为httpd)是否开启,脚本写好后可以每分钟执行一次,也可以写一个死 Status_httpd=$(netstat -lntp |grep ":80" |wc -l) Cq="`systemctl restart httpd`" Zt="`netstat -lntp`" if [ $Status_httpd -gt 0 ];then echo "httpd正常运行" else echo "httpd是未开启的马上重Qi,请查看!" echo $Cq #|mail -s "httpd start" [email?protected] echo $Zt fi
6.现在有一个lnmp环境,经常出现502错误,只要一重启php-fpm即可解决,如果不重启则会持续非常长的一段时间,所有有必要写一个监控脚本,监控访问日志的状态码,一旦发生502,则自动重启一下php-fpm
>分析 1.通过日志尾部最后300行,统计502出现的次数 2.精准判断是否是502错误,不是则不处理,是则重启php-fpm
sort :默认是按ASCII码进行排序的 常用选项: -n :按数值大小排序 -r: 倒叙排列 -k: 指定字段排序 -t: 指定分割符 -u: 去掉重复 例如:sort -nk3 -t: /etc/passwd cat /proc/cpuinfo |grep ‘ physical id‘ |sort -u |wc -l
uniq: 去重,这里的去重指的是相邻行,才会去重 -d: 只显示重复的行 -D: 把所有重复的行都显示出来 -c:显示每行重复的次 tail -300 /var/log/@R_419_5158@/access.log | awk ‘{print $9}‘|sort -n|uniq -c
7用sHell
打印下面这句话中字母数小于6个的单词Bash also interprets a number of multi-user optios
>分析 1.使用循环遍历 2.怎么统计单词数值 wc -c
#!/bin/bash for s in Bash also interprets a number of multi-character options do n=`echo $s |wc -c` if [ $n -lt 6 ] then echo $s fi done
8.添加user_00->user_09
10个用户,并且给他们设置一个随机密码,密码要求10位包含大小写字母以及数字,注意需要把每个用户的密码记录到一个日志文件中
>分析 1.怎么实现00-09思路`echo user_{00..10} seq -w 0 10` 2.随机密码`mkpasswd( yum install expect)`
[[email?protected] scripts]# cat Create_user.sh #!/bin/bash #Create Time 2018-11-07 export PATH=$PATH for i in user_{00..10} do useradd $i pass=`mkpasswd -l 10 -s 0` echo $pass |passwd --stdin $i echo $pass $i >> /tmp/pass.log done
9.写个sHell看看你的linux
系统中是否有自定义用户(普通用户),若有一共有多少个?
>分析 1.查看/etc/passwd文件 2.只有UID大于1000的都是普通
cat /etc/passwd|awk -F ":" ‘{print "$3}‘ [[email?protected] scripts]# cat /etc/passwd |awk -F : ‘$3>1000&& $3!=65534 {print $0}‘ user_01:x:1001:1001::/home/user_01:/bin/bash user_02:x:1002:1002::/home/user_02:/bin/bash user_03:x:1003:1003::/home/user_03:/bin/bash user_04:x:1004:1004::/home/user_04:/bin/bash user_05:x:1005:1005::/home/user_05:/bin/bash user_06:x:1006:1006::/home/user_06:/bin/bash user_07:x:1007:1007::/home/user_07:/bin/bash user_08:x:1008:1008::/home/user_08:/bin/bash user_09:x:1009:1009::/home/user_09:/bin/bash user_10:x:1010:1010::/home/user_10:/bin/bash
10.写一个sHell
脚本,检测所有磁盘分区使用率和inode
使用率,并记录到以当天时间命名的日志文件中,当发现某个分区容量或inode
使用量大于85%时,发邮件通知自己
>分vps云服务器析 1.打印当前磁盘inode和使用率至文件中 2.取值判断是否使用率超过85% 3.发邮件通知自己(/tmp/error.txt)
#!/bin/bash log=/var/log/disk/`date +%F`.log date +‘%F %T‘ > $log df -h >> $log echo >> $log df -i >> $log for i in `df -h|grep -v ‘Use%‘|sed ‘s/%//‘|awk ‘{print $5}‘`; do if [ $i -gt 85 ]; then use=`df -h|grep -v ‘Use%‘|sed ‘s/%//‘|awk ‘$5==‘$i‘ {print $1,$5}‘` echo "$use" >> use fi done if [ -e use ]; then ##这里可以使用咱们之前介绍的mail.py发邮件 mail -s "Filesystem Use% check" [email?protected] < use rm -rf use fi for j in `df -i|grep -v ‘IUse%‘|sed ‘s/%//‘|awk ‘{print $5}‘`; do if [ $j -gt 85 ]; then iuse=`df -i|grep -v ‘IUse%‘|sed ‘s/%//‘|awk ‘$5==‘$j‘ {print $1,$5}‘` echo "$iuse" >> iuse fi done if [ -e iuse ]; then mail -s "Filesystem IUse% check" [email?protected] < iuse rm -rf iuse fi
11.写一个sHell
脚本来看看你使用最多的命令是那些,列出常用的命令top10
>分析 1.拿到想要的值,排序、去重、统计
[[email?protected] scripts]# history |awk ‘{print $2}‘|sort -u|tail -10
12.写一个脚本判断你的Linux
服务器里是否开启web
服务,如果开启了请判断跑的是什么服务,是httpd
还是@R_419_5158@
又或是其他?
>分析 1.使用`netstat`查看是否存在80 2.筛选80端口对应的是`@R_419_5158@`还是`httpd`
#!/bin/bash port=`netstat -lnp | grep 80` if [ -z "port" ]; then echo "not start service."; exit; fi web_server=`echo $port | awk -F‘/‘ ‘{print $2}‘|awk -F : ‘{print $1}‘` case $web_server in httpd ) echo "apache server." ;; @R_419_5158@ ) echo "@R_419_5158@ server." ;; * ) echo "other server." ;; esac
13.当前@H_940_15@mysqL服务的root
密码为123456
写脚本检测@H_940_15@mysqL服务是否正常(比如,可以正常进入@H_940_15@mysqL执行show processlist
),并检查一下当前的MysqL服务是主还是从,如果是从,请判断他的主从服务是否异常,如果是主,则不需要做什么
>分析 1.使用非交互的方式登录MysqL进行取值 MysqL -h -u -p -e 2.检查主从,如果是主则返回空,如果是从则返回数值(show slave status\G) 3.检查从的IO线程和sql线程是否正常。
#!/bin/bash MysqL_c="MysqL -uroot -p123456" $MysqL_c -e "show processlist" >/tmp/MysqL_pro.log 2>/tmp/MysqL_log.err n=`wc -l /tmp/MysqL_log.err|awk ‘{print $1}‘` if [ $n -gt 0 ] then echo "MysqL service sth wrong." else $MysqL_c -e "show slave status\G" >/tmp/MysqL_s.log n1=`wc -l /tmp/MysqL_s.log|awk ‘{print $1}‘` if [ $n1 -gt 0 ] then y1=`grep ‘Slave_IO_Running:‘ /tmp/MysqL_s.log|awk -F : ‘{print $2}‘|sed ‘s/ //g‘` y2=`grep ‘Slave_sql_Running:‘ /tmp/MysqL_s.log|awk -F : ‘{print $2}‘|sed ‘s/ //g‘` if [ $y1 == "Yes" ] && [ $y2 == "Yes" ] then echo "slave status good." else echo "slave down." fi fi fi
14.写一个脚本,计算100以内能被3整除的正整数之和
>分析 1.先找出1-100能除以3等于0的数值 2.让数值进行相加
[[email?protected] scripts]# cat 14.sh #/usr/bin/bash #Authro Wangweigang #Create Time 2018-11-06 #100以内能被3整除的数字之和。 sum=0 for i in {1..100};do if [ $[$i%3] -eq 0 ];then sum=$[$i+$sum] fi done echo "sum is =$sum"
15.提示用户输入网卡名字,然后我们用脚本输出网卡的IP
>分析 1.需要读入用户输入的网卡名称 2.判断输入的网卡名称是否正确 3.判断网卡是否有IP地址,有则输出,没有则提示
#!/bin/bash #Authro Wangweigang #Create Time 2018-11-08 cat <<END web1 10.0.0.7 web2 10.0.0.8 web3 10.0.0.9 nfs 10.0.0.31 BACkup 10.0.0.41 mo1 10.0.0.61 END while true web1=$(ifconfig eth0 |awk ‘NR==2{print $2}‘) read -p "Please Input Network " hostname do if [ $hostname -eq 1 ];then echo "10.0.0.7" elif [ $hostname -eq web2 ];then echo "10.0.0.8" elif [ $hostname -eq web3 ];then echo "10.0.0.9" elif [ $hostname -eq m01 ];then echo "10.0.0.61" elif [ $hostname -eq nfs ];then echo "10.0.0.31" elif [ $hostname -eq BACkup ];then echo "10.0.0.41" else echo "您输入的用户名不存在" exit fi done
16.写一个猜数字脚本,当用户输入的数字和预设数字(随机生成一个0-100的数字)一样时,直接退出,否则让用户一直输入,并且提示用户的数字比预设数字大或者小
猜苹果是多少钱一斤 >分析 1.随机数字如何生成 2.死循环,直到猜对才退出 3.判断大小
#!/bin/bash num=$(echo $(($RANDOM%100+1))) while true do read -p "Please Input number:" number if [ $number -gt $num ];then echo "你输入的数字太大了!!" elif [ $number -lt $num ];then echo "你输入的数字太小了!!" else echo "恭喜你猜中了^^^" exit 666 fi done
17.写一个脚本判断输入的用户是否登入,如果未登陆提示没有登陆,如果登陆,显示登陆的终端以及通过那个IP登陆过来的
>分析 1.使用w获取当前所有登陆系统的用户 2.判断 #!/usr/bin/bash export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin read -p "请输入用户名称:" A Are=`awk -F: ‘$3<1||$3>999{print $1}‘ /etc/passwd|grep "^${A}$"|wc -l` User=$(who|grep "$A"|wc -l) case $Are in 0) echo "$A 这个用户不存在" ;; 1) [ $User -eq 0 ] && echo "$A 未登录" || who|awk ‘/‘$A‘/{print $"\t"$2"\t"$NF}‘ esac
18.写一个sHell
先判断是否安装http
和@H_940_15@mysqL没有安装进行安装,安装了检查是否启动服务,若没有启动则需要启动服务。
>分析 1.使用rpm命令判断是否安装对应的软件 2.检查是否启动(ssytemctl|ps)
19.写一个sHell
脚本,通过curl -l
返回的状态码来判断所访问的网站是否正常,比如:当状态码为200|301|302
时,才算正常
>分析 1.获取状态码的关键值 2.根据状态进行判断即可
[[email?protected] scripts]# cat status_num.sh #!/bin/bash export PATH=$PATH Status_Num=$(curl -I -m 10 -o /dev/null -s -w %{http_codE} www.baidu.com) if [ $Status_Num -eq 200 ]||[ $Status_Num -eq 302 ]||[ $Status_Num -eq 301 ];then echo "此网站的状态码为:$Status_Num" else echo "状态有误请查看当前状态码:$Status_Num 的状态码的错误" fi
20.已知@R_419_5158@
访问的日志文件在/var/log/@R_419_5158@/access.log
请统计下早上10点到早上12点来访IP最多的是哪个?
grep -E ‘30/Oct/2018:1[0-2]:[0-5][0-9]:/var/log/@R_419_5158@/access.log |awk ‘{print $1}‘ |sort -n |uniq -c |head -n1
=======================================================================================
1、中企动力面试题
https://blog.csdn.net/u010230971/article/details/80335522
用sHell处理以下内容 1、按单词出现频率降序排序! 2、按字母出现频率降序排序! the squid project provides a number of resources toassist users design,implement and support squid installations. Please browsethe documentation and support sections for more infomation
str="the squid project provides a number of resources toassist users design,implement and support squid installations. Please browsethe documentation and support sections for more infomation" #no1按单词出现的频率降序排序 word(){ echo $str|sed ‘s#[^a-zA-Z]#\n#g‘|grep -v "^$"|sort|uniq -c|sort -rn -k1 } #no2按字母出现的频率降序排序 String(){ echo $str|grep -o "."|egrep -v "[^a-zA-Z]"|sort|uniq -c|sort -rn -k1 } menu(){ cat <<END 1.按单词出现的频率降序排序 2.按字母出现的频率降序排序 END read -p "Pls you choose num:" num } menu usage(){ echo "USAGE:You muset choose 1 or 2" exit 1 } case "$num" in 1) word ;; 2) String ;; *) usage esac
2、企业面试题
已知下面的字符串是通过RANDOM随机数变量md5sum|cut-c 1-8截取后的结果,请破解这些字符串对应的md5sum前的RANDOM对应数字?
21029299 00205d1c a3da1677 1f6d12dd 解答:利用random的范围(0-32767)
for ((i=0;i<=32767;i++)) do for j in `cat /server/scripts/ab.txt` do if [[ "$(echo $i|md5sum)" =~ "${j}" ]] then echo $i fi done done
for ((i=0;i<=32767;i++)) do for j in `cat /server/scripts/ab.txt` do #echo "$(echo $i|md5sum|cut -c 1-8) ${j}" if [ "$(echo $i|md5sum|cut -c 1-8)" == "${j}" ] then echo $i fi done done
利用数组来做
#!/bin/sh a=(21029299 00205d1c a3da1677 1f6d12dd) for n in {0..32767} do random=`echo $n|md5sum|cut -c1-8` for((i=0;i<=${#a[@]};i++)) do if [ "$random" == "${a[i]}" ];then echo "$n" "${a[i]}" fi done done
3、使用for循环在/oldboy目录下通过随机小写10个字母加固定字符串oldboy批量创建10个html文件,名称例如为:
tr -dc 的意思是,将字符串中a到z 以外的字符提取并删除,只保留小写字母
#!/bin/bash dir=/oldboy [ ! -d $dir ] && mkdir -p $dir for((i=1;i<=10;i++ )) do a=`tr -dc "a-z" < /dev/urandom | head -c 10`_oldboy,html touch $dir/$a done
for i in `seq 10`;do a=`echo $RANDOM|md5sum|tr "0-9" "j-z"|cut -c1-10`;touch ${a}_oldboy.html;done
4、请用至少两种方法实现!
将以上文件名中的oldboy全部改成oldgirl(用for循环实现),并且html改成大写。
rename _oldboy.html _oldgirl.HTML *
#!/bin/bash cd /root/oldfile for a in `ls` do b=`echo $a|sed ‘s/oldboy.html/oldgirl.HTML/g‘` mv $a $b done
#!/bin/bash
cd /root/oldfile
for a in ls
do
b=echo $a|awk -F ‘_‘ ‘{print $1}‘
@H_426_19@mv $a $b_oldgirl.HTML
done
5、写一个脚本,实现判断10.0.0.0/24网络里,当前在线用户的IP有哪些(方法有很多)
[[email?protected] ~]# cat ping.sh #!/bin/sh for i in {1..254} do { IP=10.0.0.$i ping -c1 $IP &>/dev/null if [ $? -eq 0 ];then echo "$IP" >>ip.txt fi }& done wait echo "全部已经完
#!/bin/bash subnet=10.0.0.0/24 #方法一 netaddr=`echo $subnet|cut -d. -f1-3` for i in {1..254};do { ping -c 1 -t 1 $netaddr.$i > /dev/null if [ $? == 0 ];then echo $netaddr.$i fi } & done wait #方法二 nmap -sP $subnet
#!/bin/bash for I in `seq 1 255` do ping -c 1 10.0.0.$I &>/dev/null if [ $? -eq 0 ] then echo -e "10.0.0.$I is up." else echo -e "10.0.0.$I is down." fi done
6、请用至少两种方法实现!循环、数组方式
for循环打印下面这句话中字母数不大于6的单词(昆仑万维面试题)。 I am oldboy teacher welcome to oldboy Training class.
for s in I am oldboy teacher welcome to oldboy Training class. do n=`echo $s |wc -c` if [ $n -lt 6 ] then echo $s fi done
#!/bin/bash len=6 words=‘I am oldboy teacher welcome to oldboy Training class.‘ #方法二 for word in ${words[@]};do l=$(echo $word|wc -C) if [ $l -gt $len ];then echo $word;fi done #方法三 for word in ${words[@]};do l=$(echo $word|awk ‘{print length($0)}‘) if [ $l -gt $len ];then echo $word;fi done
#方法四
echo "I am oldboy teacher welcome to oldboy Training class."|xargs -n1|awk ‘{if(length<6)print}‘
#方法五
echo "I am oldboy teacher welcome to oldboy Training class."|awk ‘{for(i=1;i<=NF;i++)if(length($i)<6)print $i}‘
7、开发sHell脚本分别实现以脚本传参以及read读入的方式比较2个整数大小。以屏幕输出的方式提醒用户比较结果。当用脚本传参以及read读入的方式需要对变量是否为数字、并且传参个数做判断。
#!/bin/bash #read读参 IFS=‘,‘ compare() { n1=$1 n2=$2 if [ $n1 -ge $n2 ];then [ $n1 -eq $n2 ] && echo "$n1 = $n2" || echo "$n1 > $n2" else echo "$n1 < $n2" fi } isnum() { num=$1 for n in ${num[@]};do if [[ ! $n =~ ^[0-9]+$ ]];then echo ‘WARNING: 必须输入整数!‘ return 1 fi done } while :;do read -a num -p "请输入2个整数(逗号分隔): " if [ ${#num[@]} -ne 2 ];then echo ‘WARNING: 必须输入2个整数!‘ conTinue fi isnum $num && compare ${num[@]} done #!/bin/bash # 脚本传参 compare() { n1=$1 n2=$2 if [ $n1 -ge $n2 ];then [ $n1 -eq $n2 ] && echo "$n1 = $n2" || echo "$n1 > $n2" else echo "$n1 < $n2" fi } isnum() { num=$1 for n in ${num[@]};do if [[ ! $n =~ ^[0-9]+$ ]];then echo ‘WARNING: 必须输入整数!‘ exit 2 fi done } if [ $# -ne 2 ];then echo ‘WARNING: 必须输入2个整数!‘ exit 1 fi isnum "$*" && compare [email?protected]
===========================================================
解法2老师讲
#!/bin/bash read -p "please input two number: " -a Arr_str echo ${Arr_str[*]} | grep -E "^[0-9 ]{1,}$" &>/dev/null || exit if [ ${#Arr_str[*]} -eq 2 ];then if [ ${Arr_str[0]} -eq ${Arr_str[1]} ];then echo "${Arr_str[0]} == ${Arr_str[1]}" elif [ ${Arr_str[0]} -gt ${Arr_str[1]} ];then echo "${Arr_str[0]} > ${Arr_str[1]}" else echo "${Arr_str[0]} < ${Arr_str[1]}" fi else echo "please input two number" fi
8、面试及实战考试题:监控web站点目录(/var/html/www)下所有文件是否被恶意篡改(文件内容被改了),如果有就打印改动的文件名(发邮件),定时任务每3分钟执行一次。
首先,思想过程更重要。 什么是恶意篡改,只要未经过许可改动的都是篡改。 文件被改了,会有特征。 a. 大小可能会变化。 b. 修改时间会变化,(文件测试符ot,nt) c. 文件内容会变化,md5sum指纹 d. 增加或删除文件 find /var/www/html -type f |xargs md5sum >/tmp/md5list [[email?protected] ~]# mkdir -p /var/www/html [[email?protected] ~]# touch /var/www/html/{a..k} [[email?protected] ~]# ls /var/www/html a b c d e f g h i j k [[email?protected] ~]# find /var/www/html -type f |xargs md5sum >/tmp/md5list [[email?protected] ~]# cat /tmp/md5list d41d8cd98f00b204e9800998ecf8427e /var/www/html/h d41d8cd98f00b204e9800998ecf8427e /var/www/html/d d41d8cd98f00b204e9800998ecf8427e /var/www/html/f d41d8cd98f00b204e9800998ecf8427e /var/www/html/b d41d8cd98f00b204e9800998ecf8427e /var/www/html/k d41d8cd98f00b204e9800998ecf8427e /var/www/html/c d41d8cd98f00b204e9800998ecf8427e /var/www/html/i d41d8cd98f00b204e9800998ecf8427e /var/www/html/a d41d8cd98f00b204e9800998ecf8427e /var/www/html/e d41d8cd98f00b204e9800998ecf8427e /var/www/html/j d41d8cd98f00b204e9800998ecf8427e /var/www/html/g #用md5sum测试文件是否有问题 [[email?protected] ~]# md5sum -c /tmp/md5list /var/www/html/h: OK /var/www/html/d: OK /var/www/html/f: OK /var/www/html/b: OK /var/www/html/k: OK /var/www/html/c: OK /var/www/html/i: OK /var/www/html/a: OK /var/www/html/e: OK /var/www/html/j: OK /var/www/html/g: OK #修改文件后检测 [[email?protected] ~]# echo 1111 > /var/www/html/a [[email?protected] ~]# md5sum -c /tmp/md5list /var/www/html/h: OK /var/www/html/d: OK /var/www/html/f: OK /var/www/html/b: OK /var/www/html/k: OK /var/www/html/c: OK /var/www/html/i: OK /var/www/html/a: Failed /var/www/html/e: OK /var/www/html/j: OK /var/www/html/g: OK md5sum: WARNING: 1 of 11 computed checksums did NOT match 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 故在此基础上我们可以写个脚本来监控目录中是否有文件被篡改,我把发邮件的给注释掉了 [[email?protected] scripts]# cat monitor.sh #!/bin/bash Path=/var/www/html md5file=/tmp/md5list md5check_safety=/tmp/md5check_safety md5check_Failed=/tmp/md5check_Failed check_result=`md5sum -c $md5file |grep Failed|wc -l` if [ $check_result -eq 0 ]; then echo "$(date +%F) $Path is security." >>$md5check_safety #mail -s "md5check result" "[email?protected]" <$md5check_safety else echo "$(date +%F) $Path was changed." >>$md5check_Failed #mail -s "md5check result" "[email?protected]" <$md5check_Failed fi #在上边实验的基础上我们来测试 [[email?protected] scripts]# cat /tmp/md5check_Failed 2018-08-24 /var/www/html was changed.
9、老男孩教育天津项目学生实践抓阄题目:
好消息,老男孩培训学生外出企业项目实践机会(第6次)来了(本月中旬),但是,名额有限,队员限3人(班长带队)。
因此需要挑选学生,因此需要一个抓阄的程序: 要求: 1、执行脚本后,想去的同学输入英文名字全拼,产生随机数01-99之间的数字,数字越大就去参加项目实践,前面已经抓到的数字,下次不能在出现相同数字。 2、第一个输入名字后,屏幕输出信息,并将名字和数字记录到文件里,程序不能退出继续等待别的学生输入,抓完输入exit退出。
#!/bin/bash output=/tmp/result rand_num() { min=$1 max=$2 echo $(($RANDOM%$max+$min)) } touch $output while :;do read -p ‘输出名字全拼: ‘ name while :;do r=$(rand_num 1 99) count=$(grep -w -c $r $output) if [ $count -eq 0 ];then echo $name:$r|tee -a $output break/exit fi done done
解法2老师讲
#!/bin/sh touch /tmp/b.log while true do while true do ran=`echo $((RANDOM%100))` if [ `grep -w $ran /tmp/b.log|wc -l` -eq 1 ];then ran=`echo $((RANDOM%100))` else break fi done read -p "请输入你姓名的拼音: " name if [ "$name" == "exit" ];then echo "抓阄结束,结果如下" break else echo "$name" "$ran" echo -e "$name\t$ran" >>/tmp/b.log fi done sort -rn -k2 /tmp/b.log|head -n3
10、计算从1加到100之和
#!/bin/sh j=0 for((i=0; i<=100; i++)) do ((j=j+i)) done echo $j
#!/bin/bash sum=0 i=1 for i in `seq 100` do let sum=sum+i done echo $sum
本站总结
以上是本站教程为你收集整理的Shell编程面试题全部内容,希望文章能够帮你解决Shell编程面试题所遇到的程序开发问题。
如果觉得本站教程网站内容还不错,欢迎将本站教程推荐给好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。