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?
?
继续添加中...