shell小技巧(十五)模擬抓鬮

2021-10-04 09:50:23 字數 1407 閱讀 1257

要求:

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 ...