亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 3144 | 回復(fù): 0
打印 上一主題 下一主題

在ksh環(huán)境下控制字符串輸入的腳本 [復(fù)制鏈接]

論壇徽章:
1
15-16賽季CBA聯(lián)賽之北控
日期:2022-03-04 22:35:50
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2008-03-30 10:45 |只看該作者 |倒序?yàn)g覽
 作者:lvgq2001
本人因工作需要在SCO的ksh環(huán)境下寫(xiě)了一個(gè)控制字符串輸入的腳本,
用于在shell腳本中輸入某些需要限制長(zhǎng)度,不能含有特殊字符的變量值,
適合作為數(shù)據(jù)錄入的界面。歡迎大家批評(píng)指正,謝謝!
腳本如下:

#!/bin/ksh
# ksh環(huán)境下控制字符串輸入的shell
# 仙桃市農(nóng)村信用合作聯(lián)社 呂永輝
getcon(){
stty raw -echo
TempC=`dd if=/dev/tty bs=1 count=1 2>/dev/null | od -b | sed '$d' | awk '{printf("obase=10;ibase=8;%d\n",$2)}' | bc`
stty -raw
echo $TempC
}
get_str(){ # 參數(shù):1-長(zhǎng)度 2-提示行 3-縱坐標(biāo) 4-變量名 5-是否可空
eval $4=""
set -A StrT
while
   i=0
   echo "[${3};3H`printf "%-10s[%$1s]" ${2} ' '`" > /dev/tty
#   echo "[${3};13H[`printf "%$1s" ' '`]" > /dev/tty
   echo "[${3};14H\c" > /dev/tty
   while
   [ "$i" = "$1" ] && break
   stty -echo
   C_Code=`getcon`
    case $C_Code in
     13|127) break;; # 回車(chē)、跳出
     27)stty min 0 time 1;C_Code=`getcon`;stty min 1 time 1 #處理功能鍵序列
        [ $C_Code -eq 91 ] && {
          C_Code=`getcon`
          case $C_Code in
            65)C_Code=27;C_Fun=Up;break;;
            66)C_Code=27;C_Fun=Down;break;;
            67)C_Code=27;C_Fun=Right;break;;
            68)C_Code=27;C_Fun=Left;break;;
            71)C_Code=27;C_Fun=PgUp;break;;
            73)C_Code=27;C_Fun=PgDn;break;;
            *)C_Code=13;break;;
          esac
                }||{
          C_Code=27;C_Fun=ESC;break
                };;
     60|61|62|63|91|92|93|123|124|125) continue;; # 屏蔽限制字符
    esac
   [ $C_Code -eq 8 ] && {
    [ i -eq 0 ] && {
           echo "[${3};`expr 14 + $i`H\c" > /dev/tty
        continue
        }
    j=`expr $i - 1`
    [ "${StrT[$j]}" = "" ] && {
      StrT[$i]=""
      StrT[$j]=""
      i=`expr $j - 1`
      StrT[$i]=""
      echo "[${3};`expr 14 + $i`H  \c" > /dev/tty
      echo "[${3};`expr 14 + $i`H\c" > /dev/tty
            }||{
      StrT[$i]=""
      i=`expr $i - 1`
      StrT[$i]=""
      echo "[${3};`expr 14 + $i`H \c" > /dev/tty
      echo "[${3};`expr 14 + $i`H\c" > /dev/tty
            }
      continue
        }
     [ $C_Code -lt 43 ] && continue # 屏蔽特殊字符
     StrT[$i]="`echo $C_Code| awk '{printf("%c\n",$1)}'`"
     [ "${StrT[$i]}" = " " -o "${StrT[$i]}" = "" ] && continue
     [ $C_Code -gt 128 ] && {
        StrA=`echo -n ${StrT[$i]}`
        j=`echo -n $i`
        i=`expr $i + 1`
        [ "$i" = "$1" ] && {
        StrT[$j]=""
        i=`expr $i - 1`
             echo -n "[${3};`expr 14 + $j`H ]" > /dev/tty
             echo "[${3};`expr 14 + $j`H\c" > /dev/tty
        continue
                } || {
        C_Code=`getcon`
        StrT[$i]="`echo $C_Code| awk '{printf("%c\n",$1)}'`"
        StrT[$j]=`echo -n ${StrA}${StrT[$i]}`
        StrT[$i]=""
                     }
                }
     C_Str=`echo ${StrT
  • } | sed 's/ //g'`
         stty echo
         echo  "[${3};14H${C_Str}\c" > /dev/tty
         do
         i=`expr $i + 1`
         done
    do
         [ $C_Code -eq 127 -o $C_Code -eq 27 ] && {
         # 、丟棄輸入還未處理功能鍵序列
           [ $5 -eq 1 ] && {
            C_Str='';continue
                    }||{
            stty echo;eval $4="";break
                    }
            }
         [ $C_Code -eq 13 ] && {
           [ $5 -eq 1 -a "$C_Str" = "" ] && {
            continue
                    }||{
            stty echo;eval $4=`echo -n $C_Str`;C_Str="";break
                    }
            }
         [ "$i" = "$1" ] && {
            stty echo;eval $4=`echo -n $C_Str`;C_Str="";break
                    }
         C_Str=''
         set -A StrT
    done
    }
    # get_str 參數(shù):1-長(zhǎng)度 2-標(biāo)題 3-縱坐標(biāo) 4-變量名 5-是否可空
    clear
    conI=5
    get_str 2 機(jī)構(gòu)號(hào) $conI InstNo 1
    conI=`expr $conI + 1`
    get_str 1 資產(chǎn)主類(lèi) $conI AssetsClass 1
    conI=`expr $conI + 1`
    get_str 30 資產(chǎn)名稱(chēng) $conI AssetsName 1
    conI=`expr $conI + 1`
    get_str 30 建筑物地址 $conI AssetsAdd 0
    conI=`expr $conI + 1`
    get_str 20 房產(chǎn)證號(hào)碼 $conI AbstractTitle 0
    conI=`expr $conI + 1`
    get_str 20 土地證號(hào)碼 $conI TenureTitle 0
    conI=`expr $conI + 1`
    get_str 10 保管人 $conI Custodian 0
    conI=`expr $conI + 1`
    get_str 60 備注 $conI Remark 0
    echo "\n $AssetsClass $InstNo $AssetsName \n 地址:$AssetsAdd \n 房產(chǎn)證號(hào):$AbstractTitle \n土地證號(hào):$TenureTitle 保管人:$Custodian \n 備注:$Remark"


    本文來(lái)自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u/31/showart_511751.html
  • 您需要登錄后才可以回帖 登錄 | 注冊(cè)

    本版積分規(guī)則 發(fā)表回復(fù)

      

    北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年舉報(bào)專(zhuān)區(qū)
    中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
    感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP