Linux/Unix 华丽的Shell
#!/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 Usagefi#-----------------------------# 得到命令中的两个值#-----------------------------num1=$1num2=$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}." exitfiif [ num1 -gt num2 ]; then GREAT=$num1 SMALL=$num2 export GREAT export SMALLelse GREAT=$num2 SMALL=$num1 export GREAT export SMALLfi #echo "GREAT ${GREAT}"#echo "SMALL ${SMALL}"#-----------------------------# 程序测试最大公约数,初始化变量# tmp=`expr $GREAT % $i` 语法调试了半个小时!!#-----------------------------i=1GCD_RESULT=1greattmp=1smalltmp=1LCM_RESULT=1export iexport greattmpexport smalltmpexport GCD_RESULTexport LCM_RESULTwhile [ 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/shfor 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 $3done??
继续添加中...