自己写的一些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个选项后面写好了,将你回答的与正确答案一比较,就能判断正误。

 
时间: 2024-08-11 09:44:53

自己写的一些shell脚本的相关文章

续写vim,shell脚本基础编辑,read命令,if与case判断语句,文件查找方式,压缩与解压,

一. Vim续写 ?1.命令扩展模式的位置定界 ??起始位置 cmd 终止位置???Cmd:????y复制????d删除????Gu变大写????gu变小写??例如:0y$命令意味着:????0 先到行头????Y 从这里开始拷贝????$ 拷贝到本行行尾最后一个字符????Ye 从当前位置拷贝到本单词的最后一个字符 ?2.扩展命令模式:地址定界 ? ?# 具体第#行,? ?#1,#2 从开头数第#1行到第#2行? ?#1,+#2 从开头数的第#1行到从第#1行开始数的第#2行? ? ?例:2,

Linux----编写可靠Linux shell脚本的八个建议

编写可靠Linux shell脚本的八个建议 指定bash shell 脚本的第一行,#!之后应该是什么? 如果拿这个问题去问别人,不同的人的回答可能各不相同.我见过/usr/bin/env bash,也见过/bin/bash,还有/usr/bin/bash,还有/bin/sh,还有/usr/bin/env sh.这算是编程界的"'茴'字四种写法"了. 在多数情况下,以上五种写法都是等价的.但是,写过程序的人都知道:"少数情况"里往往隐藏着意想不到的坑. 如果系统的

一篇教会你写90%的shell脚本!

在公司项目的开发过程中,需要编写shell脚本去处理一个业务,在编写过程中发现自身对shell脚本的知识不够完善,顾整理一下,本文章主要内容来自菜鸟教程 , 也添加了一些知识点 看完这边文章应该就可以独立完成大部分脚本得编写 shell脚本? 在说什么是shell脚本之前,先说说什么是shell. shell是外壳的意思,就是操作系统的外壳.我们可以通过shell命令来操作和控制操作系统,比如Linux中的Shell命令就包括ls.cd.pwd等等.总结来说,Shell是一个命令解释器,它通过接

一篇教会你写90%的shell脚本

在公司项目的开发过程中,需要编写shell脚本去处理一个业务,在编写过程中发现自身对shell脚本的知识不够完善,顾整理一下,本文章主要内容来自菜鸟教程 , 也添加了一些知识点 看完这边文章应该就可以独立完成大部分脚本得编写 shell脚本?在说什么是shell脚本之前,先说说什么是shell.shell是外壳的意思,就是操作系统的外壳.我们可以通过shell命令来操作和控制操作系统,比如Linux中的Shell命令就包括ls.cd.pwd等等.总结来说,Shell是一个命令解释器,它通过接受用

把ps -ef &amp; kill指令写成可以自动执行的shell脚本

之前重启服务器上的服务,均是先使用ps -ef | grep xxx指令查询出PID,然后再使用kill -9 PID指令杀死进程.由于重启的服务只止一个,每次都要重复输入,甚是麻烦. 示例 今天研究了一下,把以上手动查杀.重启服务的过程写成了shell脚本,重启服务只需执行脚本就可以了.附脚本样例: 1 #!/bin/sh 2 3 # restart das-web 4 ps -ef | grep /home/***/das-web/ | awk '{print $2}' | xargs -n

利用SHELL脚本来验证Oracle数据库RMAN备份集的有效性

利用SHELL脚本来验证Oracle数据库RMAN备份集的有效性 作者:赵全文  网名:guestart 我们生产环境的Oracle数据库都做了RMAN备份,是采用了一周的RMAN备份保留策略:除了使用RMAN备份以外,我们还使用了爱数(Eisoo)备份软件来进行备份,可以说是做到了有备无患.可是,如果有一天,Oracle数据库由于主机层面硬件原因或是数据库层面的原因不能对外提供高可用服务的时候,假设数据丢了一大部分,我们只有用RMAN备份来进行恢复,再如果发现,RMAN备份失效了,那就往地缝里

php利用root权限执行shell脚本 (转)

转一篇博客,之前搞这个东西搞了好久,结果今天晚上看到了一篇救命博客,瞬间开心了...转载转载 利用sudo来赋予Apache的用户root的执行权限,下面记录一下: 利用PHP利用root权限执行shell脚本必须进行以下几个步骤:(所有步骤都是我亲自实验,若有不妥可指出,谢谢!) 1. 确定一下你的Apache的执行用户是谁.注:不一定就是nobody,我自行安装的httpd,我的Apache的用户就是daemon 2. 利用visudo为你的Apache执行用户赋予root执行权限,当然还有

SHELL脚本自动备份Linux系统

今天来写一个使用shell脚本增量备份系统文件,顺便复习一下shell脚本相关的命令,这个脚本可以根据自己的需求来备份不同的文件或者文件夹,进行完整备份和增量备份.直接上脚本如下: #!/bin/sh #Automatic Backup Linux System Files #Author wugk 2013-11-22 #Define Variable SOURCE_DIR=( $* ) TARGET_DIR=/data/backup/ YEAR=`date +%Y` MONTH=`date

shell脚本知识

1.Shell Shell的作用是解释执行用户的命令,用户输入一条命令,Shell就解释执行一条,这种方式 称为交互式(Interactive),Shell还有一种执行命令的方式称为批处理(Batch),用户事先写一 个Shell脚本(Script),其中有很多条命令,让Shell一次把这些命令执行完,而不必一条 一条地敲命令.Shell脚本和编程语言很相似,也有变量和流程控制语句,但Shell脚本是解释 执行的,不需要编译,Shell程序从脚本中一行一行读取并执行这些命令,相当于一个用户把 脚