`

[Linux/Unix] 练习手写 Shell

阅读更多

1. 求两个数的最大公约数和最小公倍数

#!/bin/sh
#=================================================================
#    Author :  greatwqs                                         
#    Info   :  求两个数的最大公约数和最小公倍数
#    Input  :  LCM表示最小公倍数(lowest common multiple) 
#    Call   :  lcm 12 15            
#    Date   :  2010/12/17 - modify format           
#    xxxx   :  2010/12/17 - Creation                              
#-----------------------------------------------------------------
#  Usage information                                              
#-----------------------------------------------------------------
Usage()
{
 echo "========================================="
 echo "求两个数的最大公约数和最小公倍数"
 echo "用法: lcm 12 15"
 echo "返回: 最大公约数:3,最小公倍数:60."
 echo "========================================="
 exit -1
}
#-----------------------------------------------------------------
#  Test for valid input or display usage() information            
#-----------------------------------------------------------------
if [ $# -lt 2 ]; then
  Usage
fi
#-----------------------------------------------------------------
#   得到命令中的两个值
#-----------------------------------------------------------------
num1=$1
num2=$2
#-----------------------------------------------------------------
#   operation the variables
#   1.先找出其中一个比较小的数,用这个数进行递增的循环
#   2.对另外一个值进行求膜运算
#   3.在运算过程中,对能整除的循环变量记录下来
#   4.把能整除的最大的变量opr取出(最大公约数)
#   5.result = num1/opr  *  num2/opr  * opr = num1/opr * num2
#-----------------------------------------------------------------
#-----------------------------------------------------------------
#   get num : 1.GREAT,2.SMALL
#-----------------------------------------------------------------
if [ num1 -eq num2 ]; 
then
    echo "最大公约数:${num1},最小公倍数:${num1}."    
    exit
fi
if [ num1 -gt num2 ]; 
then 
    GREAT=$num1
    SMALL=$num2
    export GREAT
    export SMALL
else
    GREAT=$num2
    SMALL=$num1
    export GREAT
    export SMALL
fi 
#echo "GREAT ${GREAT}"
#echo "SMALL ${SMALL}"
#-----------------------------------------------------------------
#   程序测试最大公约数,初始化变量
#   tmp=`expr $GREAT % $i` 语法调试了半个小时!!
#-----------------------------------------------------------------
i=1
GCD_RESULT=1
greattmp=1
smalltmp=1
LCM_RESULT=1
export  i
export  greattmp
export  smalltmp
export  GCD_RESULT
export  LCM_RESULT
while [ i -le SMALL ]
do
#echo "LOOP i: ${i}"
    greattmp=`expr $GREAT % $i`
    smalltmp=`expr $SMALL % $i`
#echo "greattmp : ${greattmp}"
#echo "smalltmp : ${smalltmp}"
    if [ ${greattmp} -eq 0 ]; then 
        if [ ${smalltmp} -eq 0 ]; then
            GCD_RESULT=${i}
        fi
    fi
    i=`expr ${i} + 1`
#echo "GCD_RESULT : ${GCD_RESULT}"
done
#echo ${GCD_RESULT}
#-----------------------------------------------------------------
#   上面已经求出了最大的公约数(GCD_RESULT)
#   下面进行最小公倍数的处理
#   为了避免变量名的太多,这里的余数用smalltmp和greattmp代替
#   5.result = num1/opr  *  num2/opr  * opr = num1/opr * num2
#   *号为乘号,要考虑转义
#-----------------------------------------------------------------
LCM_RESULT=`expr $SMALL / $GCD_RESULT`
#echo "LCM_RESULT : ${LCM_RESULT}"
LCM_RESULT=`expr $LCM_RESULT \* $GREAT`
echo "最大公约数:${GCD_RESULT},最小公倍数:${LCM_RESULT}."
#-----------------------------------------------------------------
#EOF
#-----------------------------------------------------------------

 2. shell-计算文件中单词出现次数并按次数排序

echo  'abdaaccabca' | sed 's/./&\n/g' | grep -c a

3. 依次读取文本文件, 每行中词与词之间用竖线(|)分割,分割后依次把参数保存至数据库。

 

#!/bin/sh
for line in `cat mm.txt`
do
    echo $line | awk -F "|" '{ print $1,$2,$3 }'     
    #$line=greatwqs|wang|great
    #echo $1
    #echo $2
    #echo $3
    java com.greatwqs.shell.DBImportTool $1 $2 $3
done
 

4. 查找字符统计:

#!/bin/bash

if [ ! -n "$1" ]
then
    echo "Usage ./statistics filepath [keywords]"
    exit 0
fi

KEY_WORD=""
if [ -n $2 ]
then
    KEY_WORD=$2
fi

awk 'BEGIN{}
{
    if ("'$KEY_WORD'" == "") {
        if($6 == "\"POST" || $6 == "\"GET") {
            urls[$7]++
        }
    } else {
        if(($6 == "\"POST" || $6 == "\"GET") && $7 == "'$KEY_WORD'") {
            urls[$7]++
        }
    }
}
END{
    for (i in urls) {
        print i, urls[i]
    }
}' $1 | sort -k 2rn

 

继续添加中...

分享到:
评论
1 楼 greatwqs 2013-09-06  
linux添加用户:
useradd -m -r -s /bin/bash -p password007 greatwqs

-m, --create-home             create the user's home directory
-s, --shell SHELL             login shell of the new account
-r, --system                  create a system account
-p, --password PASSWORD       encrypted password of the new account

相关推荐

    用Linux/UNIX Shell编程语言设计系统监控程序.pdf

    "Linux/UNIX Shell编程语言设计系统监控程序.pdf" 本文档主要介绍了使用Linux/UNIX Shell编程语言设计系统监控程序的方法。该程序使用Shell编程语言设计CGI脚本,通过使用过滤器awk在某些输出行中提取信息,然后在...

    Linux/UNIX系统编程手册课后习题代码

    《Linux/UNIX系统编程手册》是一本经典的教材,它深入浅出地介绍了Linux和UNIX操作系统下的编程接口。这本书涵盖了各种核心API,包括文件操作、进程管理、网络通信、信号处理等,是学习系统级编程的重要参考资料。...

    《LINUX/UNIX系统编程手册》((德)Michael Kerrisk )随书代码完整版

    《LINUX/UNIX系统编程手册》((德)Michael Kerrisk ),上下册,经典的LINUX/UNIX下C语言编程教材,这是这本书所用到的所有代码,包涵所有头文件,亲测在LINUX下完美运行

    linux/unix网络编程-甘刚,,linux编程.ppt

    ,linux编程.ppt,linux编程.ppt,linux编程.ppt,linux编程.ppt,linux编程.ppt,linux编程.ppt,linux编程.ppt,linux编程.ppt,linux编程.ppt

    linux/unix系统编程手册(下)

    Linux/Unix的shell脚本是强大的自动化工具,用于批量处理任务。这部分可能涵盖bash语法、流程控制、变量、函数、输入/输出重定向,以及如何调用系统命令。 通过阅读《Linux/Unix系统编程手册(下)》,开发者不仅能...

    asm.zip_Linux/Unix编程

    Linux和Unix系统的编程通常涉及到C、C++、Python等语言,以及Shell脚本。 【压缩包子文件的文件名称列表】揭示了具体的话题: 1. "Remoting进行远程通迅.txt":这部分可能讲解了如何在Linux/Unix系统中使用...

    shell 十三问 - linux/unix入门级shell脚本书写资料

    ### Shell十三问详解 #### 1. 为何叫做Shell? Shell是用户与计算机系统之间的重要接口,它充当了用户与操作系统内核之间的桥梁。...希望以上内容能帮助您更好地理解Shell及其在Linux/Unix系统中的作用。

    Linux/Unix系统自学教程

    在IT领域,Linux和Unix系统是两种非常重要的操作系统,尤其在服务器端和开发环境中广泛应用。这份"Linux/Unix系统自学教程"将引导你逐步掌握这两种强大的操作系统的核心概念和实用技能。 首先,我们要明白Linux和...

    RSGLXT-master_Linux/Unix编程_

    《RSGLXT-master:Linux/Unix编程在人事管理系统中的应用》 RSGLXT-master 是一个专为人事管理设计的系统,充分利用了Linux/Unix平台的强大功能,为企业的员工信息管理提供了高效、稳定且灵活的解决方案。Linux/...

    《LINUX/UNIX系统编程手册 上》.((德)Michael Kerrisk ).part2

    《LINUX/UNIX系统编程手册 上》.((德)Michael Kerrisk ),经典的linux/unix下c语言编程手册,分上下册,每册有150M,由于上传权限,是能把每册分割成3份上传

    Linux-UNIX系统编程手册.pdf

    Linux/UNIX系统编程是计算机科学领域中的一项核心技术,它主要涉及使用C语言对Linux或UNIX系统提供的底层接口进行操作。系统编程允许开发者执行诸如进程控制、文件操作、信号处理、进程间通信(IPC)以及网络编程等...

    归档_Linux/Unix编程_Unixshell_

    在IT领域,Linux/Unix操作系统是开发者和系统管理员的重要平台,尤其对于服务器管理及...通过实践和调试`main.c`,你可以深入理解Unix Shell的工作原理,这对于任何涉及Unix/Linux环境的IT专业人员来说都是宝贵的经验。

    XMS.rar_Linux/Unix编程

    Linux/Unix编程涉及理解这些系统的API(应用程序编程接口)、Shell脚本、进程管理、文件系统操作、网络编程以及多线程等概念。 【压缩包子文件的文件名列表】揭示了项目的组成部分: 1. `Test.bdsproj` - 这是...

    shell.zip_Linux/Unix编程_Shell__Linux/Unix编程_Shell_

    "csh shell编程入门.docx"可能介绍了C shell(csh),它是Unix系统中的另一种Shell,其语法与Bash(默认的Unix/Linux Shell)略有不同。C shell有自己特有的命令历史管理和别名功能,但在脚本编程方面不如Bash广泛...

    linux/unix shell编程详解

    在IT领域,Linux/Unix Shell编程是系统管理员和开发者日常工作中不可或缺的一部分。Shell作为操作系统与用户交互的接口,提供了一种高效的方式来自动化任务,执行批处理操作,以及编写复杂的脚本。本文将深入探讨...

    LINUX.UNIX系统编程手册(下册)

    《linux/unix系统编程手册(上、下册)》是介绍linux与unix编程接口的权威著作。linux编程资深专家michael kerrisk在书中详细描述了linux/unix系统编程所涉及的系统调用和库函数,并辅之以全面而清晰的代码示例。...

    exercise_one_due2v3_Linux/Unix编程_

    【标题】"exercise_one_due2v3_Linux/Unix编程_" 暗示这是一个与Linux/Unix操作系统编程相关的练习或项目,可能是一个教学资源或竞赛的作业,版本为due2v3。这个标题可能代表着练习的阶段或者更新迭代,重点在于理解...

    FSP.rar_Linux/Unix编程_plenty4tu

    了解编译和链接过程,以及如何使用Makefile自动化这个过程,对任何Unix/Linux开发者都是基础。 5. **错误处理和调试**:Unix/Linux提供了丰富的调试工具,如`gdb`,用于调试代码。学会如何利用这些工具查找并修复...

    Linux / Unix SHELL编程

    Linux/Unix Shell编程是操作系统与用户交互的重要方式,它是一种脚本语言,允许用户通过命令行界面执行系统级任务和自动化工作流程。Shell不仅提供基本的命令行操作,还可以编写复杂的脚本来处理文件、目录、进程和...

    Linux/unix shell 命令和编程详细

    Linux和Unix Shell是操作系统交互的重要工具,用于自动化任务和脚本编写。Shell提供了一系列命令,使得用户能够方便地管理文件、目录、进程以及系统资源。本文将深入探讨Linux/Unix Shell命令及其编程,同时涉及AWK...

Global site tag (gtag.js) - Google Analytics