自己写的一些shell脚本

Posted 曾小福气

tags:

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

很贴心的猜价格的脚本技术分享
 1 #!/bin/bash
 2 PRICE=$(expr $RANDOM % 1000)
 3 #PRICE=100
 4 TIMES=10
 5 USETIMES=0
 6 LEFT=0
 7 RIGHT=999
 8 echo "商品的实际价格为0-999,猜猜看是多少?你最多有10次机会哦!"
 9 while [[ $TIMES -gt 0 ]]    # [ $TIMES -gt 0 ]
10 do 
11     read -p "请输入您猜测的价格数字(为一整数): " INT
12     let TIMES--
13     let USETIMES++
14     if [ $INT -eq $PRICE ];then
15         echo "恭喜您答对了,实际价格是$PRICE"
16         echo "您总共猜测了$USETIMES次"
17         #TIMES=0
18         break
19     elif [ $INT -gt $PRICE ];then 
20             RIGHT=$INT
21             echo "猜高了!您还有$TIMES次机会,提示:价格位于$LEFT到$RIGHT之间。"
22     else
23         LEFT=$INT
24         echo "猜低了!您还有$TIMES次机会,提示:价格位于$LEFT到$RIGHT之间。"
25     fi
26 done
caishu.sh

 

类C语言风格的bash shell脚本

技术分享
#!/bin/bash
for ((integer=1;integer<=5;integer++))
do 
    echo "$integer"
done
echo "-------------------------"

sum=0
for ((i=1;i<=100;i=i+2))
do 
    let "sum+=i"
done
echo "sum=$sum"    
echo "------------------------"
LIMIT=5
for ((a = 1, b = 5;a <= LIMIT;a++,b--))
do 
    let "temp=a-b"
    echo "$a-$b=$temp"
done
for_like_c.sh

 

AWK

1 BEGIN{
2     for(n=1;n<=5;n++)
3     print "2^"n,2**n
4 }
5 ###awk   -f    for.awk     

 

 

1 [[email protected] ~]$ vim shell_scripts.sh 
2 
3 [ -f aaaaa ]&&echo "aaaaa is a file" ||echo "aaaaa is a directory"
4 [ 10 -gt 10 ] && echo "10 is greater than 10" || echo "10 is not greater than 10"
5 echo $?
6 [ 10 -eq 10 ]
7 echo $?
8 FreeMem=`free -m | grep cache: |awk {print $3}`
9 echo $FreeMem

 

最后来个难一点的:用于回答问卷并判断结果的

  1 [[email protected] shell_script]$ cat quiz 
  2 #!/bin/bash
  3 #remove the # on the following line to turn on debugging
  4 #set -o xtrace
  5 
  6 #==========================
  7 function initialize (){
  8 trap summarize;exit 0 INT    #Handle user interrupts
  9 num_ques=0            #Number of questions asked so far
 10 num_correct=0            #Number answered correctly so far 
 11 first_time=true            #true until first question is asked
 12 cd ${QUIZDIR:=~/quiz} || exit 2
 13 }
 14 
 15 #=========================
 16 function choose_subj (){
 17 subjects=($(ls))
 18 PS3="Choose a subject for the quiz from the preceding list:"
 19 select Subject in ${subjects[*]};do
 20     if [[ -z "$Subject" ]];then
 21     echo "No subject chosen. Bye." >&2
 22     exit 1
 23     fi
 24     echo $Subject
 25     return 0
 26 done
 27 }
 28 
 29 #===========================
 30 function exchange (){
 31 temp_value=${questions[$1]}
 32 questions[$1]=${questions[$2]}
 33 questions[$2]=$temp_value
 34 }
 35 
 36 #===========================
 37 function scramble (){
 38 declare -i index quescount
 39 questions=($(ls))
 40 quescount=${#questions[*]}    #Number of elements
 41 ((index=quescount-1))
 42 while [[ $index > 0 ]];do
 43     ((target=RANDOM % index))
 44     exchange $target $index
 45     ((index -= 1))
 46 done
 47 }
 48 
 49 #==========================
 50 function ask (){
 51 exec 3<$1
 52 read -u3 ques || exit 2
 53 read -u3 num_opts || exit 2
 54 
 55 index=0
 56 choices=()
 57 while (( index < num_opts )) ; do
 58     read -u3 next_choice || exit 2
 59     choices=("${choices[@]}" "$next_choice")
 60     ((index += 1 ))
 61 done
 62 read -u3 correct_answer || exit 2
 63 exec 3<&-
 64 
 65 if [[ $first_time = true ]];then
 66     first_time=false
 67     echo -e "You may press the interrupt key at any time to quit.\n"
 68 fi
 69 
 70 PS3=$ques" "    #Make $ques the prompt for select
 71         #and add some spaces for legibility
 72 select answer in "${choices[@]}";do
 73     if [[ -z "$answer"  ]];then
 74     echo "Not a valid choice.Please choose again."
 75     elif [[ "$answer" = "$correct_answer" ]];then
 76      echo Correct!
 77     return 1
 78     else 
 79     echo "No,the answer is $correct_answer."
 80     return 0
 81     fi
 82 done
 83 }
 84 
 85 #=========================
 86 function summarize (){
 87 echo             #skip a line
 88 if ((num_ques == 0 ));then
 89     echo "You did not answer any questions"
 90     exit 0
 91 fi
 92 
 93 ((percent=num_correct*100/num_ques))
 94 echo "You answered $num_correct questions correctly,out of \
 95 $num_ques total questions."
 96 echo "Your score is $percent percent."
 97 }
 98 
 99 #============================
100 # main program
101 initialize        #Step 1 in top-level design
102 
103 subject=$(choose_subj)   #Step 2
104 [[ $? -eq 0 ]] || exit 2   #If no valid choice,exit
105 
106 cd $subject || exit 2     #Step 3
107 echo             #skip  a line
108 scramble         #step 4
109 
110 for ques in ${questions[*]};do    #step 5
111     ask $ques
112     result=$?
113     (( num_ques=numques+1 ))
114     if [[ $result == 1 ]];then
115     (( num_correct +=1 ))
116     fi
117     echo                     #skip a line between questions
118     sleep ${QUIZDELAY:=1}
119 done
120 
121 
122 summarize                      #step 6
123 exit 0

[[email protected] shell_script]$ cd ..
[[email protected] ~]$ ll quiz/
总用量 40
drwxrwxr-x. 2 zengqingfu zengqingfu 4096 3月 17 10:23 art
drwxrwxr-x. 2 zengqingfu zengqingfu 4096 3月 17 10:25 biology
drwxrwxr-x. 2 zengqingfu zengqingfu 4096 3月 17 10:25 chemistry
drwxrwxr-x. 2 zengqingfu zengqingfu 4096 3月 17 10:25 Chinese
drwxrwxr-x. 2 zengqingfu zengqingfu 4096 3月 17 10:23 engineering
drwxrwxr-x. 2 zengqingfu zengqingfu 4096 3月 17 10:25 english
drwxrwxr-x. 2 zengqingfu zengqingfu 4096 3月 17 10:26 history
drwxrwxr-x. 2 zengqingfu zengqingfu 4096 3月 17 10:33 math
drwxrwxr-x. 2 zengqingfu zengqingfu 4096 3月 17 10:26 physics
drwxrwxr-x. 2 zengqingfu zengqingfu 4096 3月 17 10:24 politics

问题保存在脚本父目录的下面,分为好几类:

只要执行quiz脚本,制定好问题quiz所在的路径,脚本就能读取问题,然后你回答问题,而正确答案已经在问题的4个选项后面写好了,将你回答的与正确答案一比较,就能判断正误。

 

 















以上是关于自己写的一些shell脚本的主要内容,如果未能解决你的问题,请参考以下文章

请问,Linux下,shell脚本如何调用html文件,html文件是自己写的,比如/var/www/ftp.html

代码片段:Shell脚本实现重复执行和多进程

平时随手写的一些脚本程序:shell,perl,python

常用python日期日志获取内容循环的代码片段

编写Shell脚本的最佳实践,规范一

Shell脚本开发规范