shell脚本应用小程序

1...100的求和

非递归:
  #!/bin/bash
 read num
 count=1
 sum=0
 val=""
 ret=""
 while [ $count -le $num ]
 do
    if [ $count -eq $num ];then
        val=$count
    else
        val=${count}‘+‘
    fi
    let sum+=count
    let count++
    ret=${ret}${val}
 done
 echo ${ret}‘=‘$sum
 
递归:
 #!/bin/bash
 read num
 function add(){
     local val=$1
     local count=0
     local sum=0
     local num=$val
     if [ $val -eq 1 ];then
         echo 1
         return
     fi
     arr=$count1+$val
     let val--
     let count=$( add $val )
     let sum=$count+$num
     echo $sum
 }
  ret=$(add $num)
  echo $ret

结果:

[[email protected] test6_19]$ ./add.sh

100

1+2+3+4+5+6+7+8+9+10+11+12+13+14+15+16+17+18+19+20+21+22+23+24+25+26+27+28+29+30+31+32+33+34+35+36+37+38+39+40+41+42+43+44+45+46+47+48+49+50+51+52+53+54+55+56+57+58+59+60+61+62+63+64+65+66+67+68+69+70+71+72+73+74+75+76+77+78+79+80+81+82+83+84+85+86+87+88+89+90+91+92+93+94+95+96+97+98+99+100=5050

求一个文件中数的最大最小值

#!/bin/bash
 
read name
max=0
min=0
count=0
while read line
do
    if [ $count -eq 1 ];then
        min=$line
    fi
    (( count++ ))
    if [ $max -lt $line ];then
        max=$line
    fi
    if [ $min -gt $line ];then
        min=$line
    fi
    done <$name
echo "max: "$max "min: "$min

斐波那契数列求和

非递归
#!/bin/bash
read num
fib_val[0]=1
fib_val[1]=1
count=0
function fib(){
   local val=$1
   while [ $count -lt $val ]
   do
       let fib_val[${count}+2]=${fib_val[${count}+1]}+${fib_val[$count]}
       let count++
   done
}
fib $num
echo ${fib_val[$count]}

递归:
#!/bin/bash
read num
function fib(){
   local val=$1
   local num1=0
   local num2=0
   if [ $val -eq 0 -o $val -eq 1 ];then
       echo 1
       return
   fi
   let val--
   num1=$( fib $val )
   let val--
   num2=$( fib $val )
   let sum=$num1+$num2
   echo $sum
}

结果:

[[email protected] test6_19]$ ./fib.sh

1

1

[[email protected] test6_19]$ ./fib.sh

2

2

[[email protected] test6_19]$ ./fib.sh

11

144

字符串截取的应用

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

结果:

[[email protected] test6_19]$ cat file1

123abc789

456def789

364rgy532

278bsy682

[[email protected] test6_19]$ vim string.sh

[[email protected] test6_19]$ ./string.sh

file1

[[email protected] test6_19]$ cat file_bak

789ABC123

789DEF456

532RGY364

682BSY278

时间: 2024-10-18 21:02:45

shell脚本应用小程序的相关文章

Linux运维系统工程师系列之shell脚本一则小随笔

shell随笔 一.   学好shell编程的知识储备 前面讲过,给大家留作业Linux系统命令应用: Vi/vim 编辑器的熟练使用,SSH客户端软件的设置: 基础的服务,系统服务ntp,crond,网络服务:nfs,rsync,inotify,sersync,ssh,lanmp. 补充:清空日志的三种方法: echo  " " > filename.log >filename.log cat  /dev/null > filename.log 注:工作中有的时候不

shell脚本基础小习题(二)

shell脚本基础小习题(二) 编写一个memusage.sh,根据Free命令的结果计算出内存占用率 思路: 1:在屏幕输出"free"先查看命令结果 2:根据给出的结果我们需要用到"total"和"free" total:列显示系统总的可用物理内存和交换空间大小. free:列显示还有多少物理内存和交换空间可用使用. 这里我们只看Mem(内存的使用情况)就可以. 3:我们创建脚本但是我们在free的Mem中只需要用("total&q

Linux Shell 脚本的小技巧——不定期更新

本文旨在积累平时写 shell 脚本是遇到的小问题的解决方法.在这里不定期的更新,以便以后查阅.沿用. 一,在shell 脚本中定义默认值 1.   对默认变量直接赋值 read -p "input>>:" nub nub=${nub:-30} echo ${nub} 2.   对默认变量用可变值赋值 read -p "input>>:" nub nub=${nub:-$(date +%Y%m%d)} echo ${nub}

Linux下创建shell、C小程序介绍

1.创建一个shell脚本文件 gedit  hello_shell.sh  ##创建文件 2.###在文件内添加一下内容 #!/bin/bash for  ((i=0;i<10;i++));do echo   "hello shell" done exit 0 3.为文件添加可执行权限 chmod 755 hello_shell.sh 4.执行脚本 ./hello_shell.sh ###创建一个C语言程序"hello world" 1.gedit  hel

Shell脚本编程小技巧(1)-如何解决脚本中多行重定向结束符不用对齐到行首

1.what?问题需求是什么? 首先需求从何而来呢,主要是编写shell脚本,用cat 进行多行输入重定向的时候,结束符必须要对齐行首,格式不好看. 2.how?怎么解决这个问题? 首先百度,google搜索了下,结果就是说的多的就是shell多行重定向没有解决实际问题,可能是搜索的关键字不对.人工智能检索发现了一篇好文,人家写的比我好,大家自行浏览:[https://segmentfault.com/a/1190000008130200]主要是用了<<- 3.why?什么原理呢? 其实换个思

shell 脚本 变量 获取程序输出结果异常分析

#! /bin/bash pid=$(pgrep hello) echo ${pid} 脚本名称是 hello_test.sh 当hello进程存在时,总是返回两个值 当hello进程不存在时,返回值并不为空,总是返回一个值,多次运行,返回的值并不固定 当然,以上都不是期望的结果. 为什么不存在时,也会返回呢,并且返回值不一样,记得好像有一个内部变量记得上次shell进程的pid, 应该是这样. 经人提醒,脚本是不是也是hello.sh,终于恍然醒悟,脚本名是hello_test.sh,也包含h

shell脚本 回顾 小练习

1.把/OPT目录下(包含子目录)下所有后缀为".sh"的文件后缀变更为".shell" 2.将A.B.C目录下的文件A1.A2.A3文件改名为A4.A5.A63.如何在vi模式下将文件中的aa字符串批量改成bb 1. #!/bin/bash dir=/hanzhao files=`find /hanzhao/ -name '*.sh'` for file in $files do # echo $file filename=${file%.*} # echo $f

Linux环境下,Shell脚本启动java程序

export JAVA_HOME=/home/upm/jdk1.8.0_111 export CLASSPATH=.:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar for i in lib/*.jar; do CLASSPATH=$i:${CLASSPATH} done export CLASSPATH=.:${CLASSPATH} java -cp ${CLASSPATH} com.richinfo.birtnotify.main.Mai

shell脚本编程小技巧(2)——如何解决多行重定,变量不被shell解释

参考资料 https://blog.csdn.net/ccwwff/article/details/48519119 例子 原理 ![] 原文地址:http://blog.51cto.com/lajifeiwomoshu/2158513