要求:
1、執行指令碼後,想去的同學輸入英文名字全拼,產生隨機數01-99之間的數字,數字越大機會越大,前面已經抓到的數字,下次不能在出現相同數字。
2、第乙個輸入名字後,螢幕輸出資訊,並將名字和數字記錄到檔案裡,程式不能退出繼續等待別的學生輸入,抓完輸入exit退出。
3、倒序輸出
方法1:
#!/bin/bash
>chioce.txt
e="exit"
x=""
while [ $e == "exit" ]; do
read -p "please input youname :" x
grep "$x" chioce.txt
if [ $? -eq 0 ]; then
echo "$x already in namelist,can't input again!"
continue;
fiif [ $x == $e ]; then
echo "game over!"
e=""
break;
fif=1
while [ $f -eq 1 ]; do
y=$[random%99+1]
grep "$y" chioce.txt
if [ $? -gt 0 ];then
f=0break;
fidone
echo $y" "$x >> chioce.txt
y=0x=""
echo "next input!"
done
sort -nr chioce.txt
方法2:
#!/usr/bin/bash
declare -a arr
while true
do[ "$name" = "quit" ] && break
read -p "please input you name: " name
while true
donum=`echo $(($random%99+1))`
if [[ $num =~ $ ]];then
continue
else
arr[$name]=$num
echo "$name" "$num"
break
fidone
done
for j in $
doecho $j " " $ >> zhuajiu.txt
done
sort -nr -k2 zhuajiu.txt|head -4 |column -t
總結:方法1重點是如果重複的名稱不會讓再次輸入一人一次機會,啟動前情況目標檔案,以確保只儲存本次結果。
方法2(來自網際網路的**)保證一人一次的方法是如果重複輸入,那麼第二次輸入會覆蓋第一次,略有不公平。
shell小知識小技巧
1 local config config 1,如果沒有第乙個引數,那麼config netowk 2 字串可以用 來比較 數字可以用 來比較 3 shell函式傳引數的時候,local var1 hello local var2 word 傳這兩個引數到shell函式 fun shell寫成 fu...
幾個shell小技巧
1.expr 命令 由於bash 是功能有限的直譯器,所以自身並沒有支援太多的算術運算,一切都是字串。所以如果涉及到算術運算,需要借助其他的工具,比如bc 功能比較強大的小工具 expr 和 算術擴充套件.expr 支援幾個常見的算術運算 取模 expr還支援常見的關係運算,比如 題外話 如果要想計...
shell指令碼小技巧
有個需求是,每隔4個小時會跑一遍資料收集的爬蟲,因為這個爬蟲指令碼寫的很爛,所以有時候進入死迴圈後,程序就永遠不遠停掉,因此需要寫個定時任務,定時清理這些無用程序。首先在shell上學習如何清理指定程序 ps ef grep v grep grep x cut c 10 14 xargs kill ...