幾個有意思的營運編程題
使用for迴圈在/oldboy目錄下通過隨機小寫10個字母加固定字串oldboy大量建立10個html檔案,名稱例如為:
| |
coaolvajcq_oldboy.html qnvuxvicni_oldboy.html vioesjmcbu_oldboy.html gmkhrancxh_oldboy.html tmdjormaxr_oldboy.html wzewnojiwe_oldboy.html jdxexendbe_oldboy.html ugaywanjlm_oldboy.html xzzruhdzda_oldboy.html qcawgsrtkp_oldboy.html vfrphtqjpc_oldboy.html |
#!/bin/bashletter=(`echo {a..z}`)function create_filename(){filename=`for i in $(seq 10)doecho -n ${letter[$(($RANDOM%24))]}done`_oldboy.html}for i in $(seq 10)docreate_filenametouch $filenamedone
用兩種將以上檔案名稱中的oldboy全部改成oldgirl(用for迴圈實現),並且html改成大寫
#!/bin/bashfilelist=`ls | grep ".html$"`for i in $filelistdomv $i ${i%%_*}_oldgirl.HTMLdone
#!/bin/bashfilelist=`ls | grep ".html$"`for i in $filelistdonewfile=`echo $i | awk -F'_' '{print $1"_oldgirl.HTML"}'`mv $i $newfiledone
大量建立10個系統帳號oldboy01-oldboy10並設定密碼(密碼為隨機8位字串)。
#!/bin/bashfor i in `seq 10`doif [[ $i -lt 10 ]];thenuseradd oldboy0$i && echo `cat /dev/urandom | sed 's/[^a-zA-Z0-9]//g' | strings -n 8 | head -n 1` | passwd oldboy0$i --stdinelse useradd oldboy$i && echo `cat /dev/urandom | sed 's/[^a-zA-Z0-9]//g' | strings -n 8 | head -n 1` | passwd oldboy$i --stdinfidone
寫一個指令碼,實現判斷10.0.0.0/24網路裡,當前線上使用者的IP有哪些(方法有很多)
單進程
#!/bin/bashfor i in `seq 2 255`doping 10.0.0.$i -c 1 1>/dev/null && echo 10.0.0.$i: live || echo 10.0.0.$i: deaddone
多進程
#!/bin/bashtmp_fifofile="/tmp/$$.fifo"mkfifo $tmp_fifofileexec 6<>$tmp_fifofilerm -rf $tmp_fifofilethread=254for ((i=0;i<$thread;i++))doecho ""done >&6for ((i=1;i<254;i++))doread -u6 { ping 10.0.0.$i -c 1 1>/dev/null && echo 10.0.0.$i: live || echo 10.0.0.$i: dead echo "">&6 } &donewaitexec 6>&-exit 0
bash for迴圈列印下面這句話中字母數不大於6的單詞(崑崙萬維面試題)。
I am oldboy teacher welcome to oldboy training class.
#!/bin/bashcontent="I am oldboy teacher welcome to oldboy training class."new_content=`echo $content | sed 's/\.//'`echo $new_contentarg=(`echo $new_content`)for i in ${arg[@]}doif [[ ${#i} -le 6 ]];thenecho $ifidone
已知下面的字串是通過RANDOM隨機數變數md5sum|cut-c 1-8截取後的結果,請破解這些字串對應的md5sum前的RANDOM對應數字?
21029299
00205d1c
a3da1677
1f6d12dd
890684b
#!/bin/bashdeclare -a arrayfor i in $(seq 0 32767)doarray[$i]=`echo $i | md5sum | cut -c 1-8`donekeys=([0]=21029299 [1]=00205d1c [2]=a3da1677 [3]=1f6d12dd [4]=890684b)echo "number ------- md5sum"for key in ${keys[@]}dofor i in `seq 0 32767`doif [[ "${array[i]}" == "$key" ]];thenecho $i ------- $keyfidonedone