shell--简单练习题

一、计算1+2+...+100的值

采用一般方法:

   #! /bin/bash
   
   sum=0
   res=""
   num=1
   for ((; num<=100; num++))
   do
       let sum+=num
   
      [ $num -eq 100 ]&&{
          res=${res}${num}
          break
      }
  
      res=${res}${num}‘+‘                                                     
  done
  echo ${res}=${sum}

结果如下:

使用递归方法:

  1 #! /bin/bash
  2 
  3 read num
  4 
  5 sum=0
  6 function add()
  7 {
  8     num1=$num
  9     [ $num -le 1 ]&&{
 10         echo "$num"
 11         return
 12     }
 13 
 14     let num--
 15     tmp=$(add $num)
 16     let sum=$num1+$tmp                                                      
 17     echo "$sum"
 18 }
 19 
 20 add $num

结果如下:

二、费谱那锲数

(1)采用数组方法:(保存了算出的每个数)

  1 #! /bin/bash                                                                
  2 
  3 read val
  4 arr[0]=1
  5 arr[1]=1
  6 i=0
  7 while [ $i -le $val ]
  8 do
  9     let arr[i+2]=arr[i+1]+arr[i]
 10     let i++
 11 done
 12 
 13 echo ${arr[val]}

结果如下:

(2)使用递归方法:(效率低)

  1 #! /bin/bash
  2 
  3 read num
  4 
  5 function fib()
  6 {
  7     [ $num -le 1 ]&&{
  8         echo "$num"
  9         return
 10     }
 11 
 12     let --num
 13     val1=$(fib $num)
 14     let --num
 15     val2=$(fib $num)
 16     let val=$val1+$val2
 17     echo "$val"
 18 }
 19 
 20 fib num

结果如下:

三、字符串拼接

栗子代码:

  1 #! /bin/bash
  2 
  3 while read line
  4 do
  5     str1=$(echo $line|cut -c 1-3)
  6     str2=$(echo $line|cut -c 4-6|tr ‘[a-z]‘ ‘[A-Z]‘)
  7     str3=$(echo $line|cut -c 7-9)
  8     echo ${str3}${str2}${str1}                                              
  9 done<file

结果如下:

四、模拟一个简单的进度条

栗子代码:

  1 #! /bin/bash
  2 
  3 val=100
  4 str=""
  5 arr=(‘|‘ ‘/‘ ‘-‘ ‘\\‘)
  6 for((i=1; i<=val; i++))
  7 do
  8     str+="#"
  9     let index=i%4
 10     printf "[%-100s] [${i}%%] [${arr[$index]}] \r" "${str}"
 11     sleep 0.5
 12 done
 13 printf"\n"

结果如下:

五、求文件里数字的最大最小值

栗子代码:

  1 #! /bin/bash
  2 
  3 count=0
  4 while read line
  5 do
  6     let count++                                                             
  7     [ $count -eq 1 ]&&{
  8         min=$line
  9         max=$line
 10     }
 11     [ $max -lt $line ]&&{
 12         max=$line
 13     }
 14 
 15     [ $min -gt $line ]&&{
 16         min=$line
 17     }
 18 done<file
 19 echo min=$min,max=$max

结果如下:

时间: 2024-10-05 05:32:38

shell--简单练习题的相关文章

shell脚本练习题(更新中...)

练习题(这里贴的是自己写的代码, 网上给的题目代码我会附加在最下面) 1. 编写shell脚本,计算1-100的和: 1 #!/bin/bash 2 #caculate the sum of numbers from 1 to 100 3 4 sum=0 5 for i in `seq 1 100`; do 6 sum=$[$sum+$i] 7 done 8 echo $sum 2. 编写shell脚本,要求输入一个数字,然后计算出从1到输入数字的和,要求,如果输入的数字小于1,则重新输入,直到

Linux shell ${}简单用法

转自:Linux shell ${}简单用法 为了完整起见,我这里再用一些例子加以说明 ${ } 的一些特异功能:假设我们定义了一个变量为:file=/dir1/dir2/dir3/my.file.txt我们可以用 ${ } 分别替换获得不同的值:${file#*/}:拿掉第一条 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt${file##*/}:拿掉最后一条 / 及其左边的字符串:my.file.txt${file#*.}:拿掉第一个 . 及其左边的字符串:fil

Bash shell 简单的并发任务及等待

先启动两个command line作实验 第一个 command line 依次输入: bash$ sleep 10001 & [1] 38272 bash$ job1=$! bash$ sleep 10002 & [2] 44316 bash$ job2=$! bash$ wait $job1 $job2 第二个 command line 依次输入(观察 第一个 commaind line 的变化): bash$ kill 38272 bash$ kill 44316 Bash shel

关于phpweb后台拿shell简单方法。

首先登录后台admin.php 登录后台管理系统后,然后把下面的文件保存为xxx.html,修改action,把 www.xxx.com 改成你的目标网站地址. 代码文件如下: <form name="uploadForm" method="post" enctype="multipart/form-data" action="http://www.xxx.com/kedit/upload_cgi/upload.php"

shell基础练习题

shell 基础练习题 1.编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小 #!/bin/bash echo -e "\e[1;35mThis computer is hosted by: \e[0m" hostname echo " " echo -e "\e[1;35mMy ip addr is:\e[0m" ifconfig |

shell简单使用(三)函数

shell函数简单使用 #!/bin/bash func(){ echo "Run into func" echo $* echo "func id $$" echo "Exit func" } func $6 $7 $8 $9 echo $* echo "script id $$" 执行结果如下: 其中可以看出参数是怎么传递的.所在进程的id号在函数内外一样

shell简单用法笔记(shell中数值运算)二

shell中变量值,如果不手动指定类型,默认都是字符串类型: 例如: a=123 b=456 c=$a+#b echo $c 结果会输出:123+456 shell中,如果要进行数值运算,可以通过一下方法: 方法1: a=123 b=456 c=$(($a+$b)) 方法2: a=123 b=456 declare -i c=$a+$b 通过declare -i 来声明c的数值类型为int类型 方法3: a=123 b=456 c=$(expr $a + $b) 注意+号两边有空格 通过貂绒ex

shell脚本练习题

求出数字1~100的累加和: 要求数字的累加,可以使用循环来完成,如下代码: #!/bin/bash sum=0 str="" #for i in {1..100} for ((i=1 ; i<=100 ; ++i)) do     str+="${i}+"     let sum+=i done echo "${str%+}=${sum}" 运行脚本: 另外一种可以用递归的方式: #!/bin/bash read num  sum=0 s

shell基础练习题讲解

1037774765 克隆 1.创建一个用户redhat,其ID号为1001,基本组为like(组ID为2002),附近租为linux. groupadd -g 2002 likegroupadd linuxuseradd -u 1001 -g 2002 -G linux redhat 2.创建一个用户fedora,其注释信息为Fedora Commuity,默认shell为sh man useradd 查看到-c是注释 useradd -c "Fedora Commuity" -s

shell简单使用(五)变量之三

shell变量处理 1. 变量删除 ${var#key}删除从头开始的最短匹配 ${var##key}删除从头开始的最长匹配 2. 变量删除 ${var%key}删除从尾向前的最短匹配 ${var%%key}删除从尾向前的最长匹配 3. 变量替换 ${var/old/new}替换第一个匹配 ${var//old/new}替换全部匹配 4. 替换与赋值 a. ${var-init}对变量var, 存在则保持,没有则赋值init b. ${var:-init}对变量var, 存在非空值则保持,没有或