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

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

Chinaunix

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

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

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2007-08-06 15:18 |只看該作者 |倒序?yàn)g覽
本人因工作需要在SCO的ksh環(huán)境下寫(xiě)了一個(gè)控制字符串輸入的腳本,
用于在shell腳本中輸入某些需要限制長(zhǎng)度,不能含有特殊字符的變量值,
適合作為數(shù)據(jù)錄入的界面。歡迎大家批評(píng)指正,謝謝!
腳本如下:
  1. #!/bin/ksh
  2. # ksh環(huán)境下控制字符串輸入的shell
  3. # 仙桃市農(nóng)村信用合作聯(lián)社 呂永輝
  4. getcon(){
  5. stty raw -echo
  6. 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`
  7. stty -raw
  8. echo $TempC
  9. }
  10. get_str(){ # 參數(shù):1-長(zhǎng)度 2-提示行 3-縱坐標(biāo) 4-變量名 5-是否可空
  11. eval $4=""   # 清空目標(biāo)變量的值
  12. set -A StrT  # 清空數(shù)組元素的值
  13. while
  14.    i=0
  15.    echo "[${3};3H`printf "%-10s[%$1s]" ${2} ' '`" > /dev/tty
  16.    echo "[${3};14H\c" > /dev/tty
  17.    while
  18.    [ "$i" = "$1" ] && break
  19.    stty -echo
  20.    C_Code=`getcon`
  21.     case $C_Code in
  22.      13|127) break;; # 回車(chē)、<DEL>跳出
  23.      27)stty min 0 time 1;C_Code=`getcon`;stty min 1 time 1 #處理功能鍵<esc>序列
  24.         [ $C_Code -eq 91 ] && {
  25.           C_Code=`getcon`
  26.           case $C_Code in
  27.             65)C_Code=27;C_Fun=Up;break;;
  28.             66)C_Code=27;C_Fun=Down;break;;
  29.             67)C_Code=27;C_Fun=Right;break;;
  30.             68)C_Code=27;C_Fun=Left;break;;
  31.             71)C_Code=27;C_Fun=PgUp;break;;
  32.             73)C_Code=27;C_Fun=PgDn;break;;
  33.             *)C_Code=13;break;;
  34.           esac
  35.                 }||{
  36.           C_Code=27;C_Fun=ESC;break
  37.                 };;
  38.      60|61|62|63|91|92|93|123|124|125) continue;; # 屏蔽限制字符
  39.     esac
  40.    [ $C_Code -eq 8 ] && {             # 處理<Backspace>鍵功能
  41.     [ i -eq 0 ] && {
  42.            echo "[${3};`expr 14 + $i`H\c" > /dev/tty
  43.         continue
  44.         }
  45.     j=`expr $i - 1`
  46.     [ "${StrT[$j]}" = "" ] && {
  47.       StrT[$i]=""
  48.       StrT[$j]=""
  49.       i=`expr $j - 1`
  50.       StrT[$i]=""
  51.       echo "[${3};`expr 14 + $i`H  \c" > /dev/tty
  52.       echo "[${3};`expr 14 + $i`H\c" > /dev/tty
  53.             }||{
  54.       StrT[$i]=""
  55.       i=`expr $i - 1`
  56.       StrT[$i]=""
  57.       echo "[${3};`expr 14 + $i`H \c" > /dev/tty
  58.       echo "[${3};`expr 14 + $i`H\c" > /dev/tty
  59.             }
  60.       continue
  61.         }
  62.      [ $C_Code -lt 43 ] && continue # 屏蔽特殊字符
  63.      StrT[$i]="`echo $C_Code| awk '{printf("%c\n",$1)}'`"
  64.      [ "${StrT[$i]}" = " " -o "${StrT[$i]}" = "" ] && continue
  65.      [ $C_Code -gt 128 ] && {
  66.         StrA=`echo -n ${StrT[$i]}`
  67.         j=`echo -n $i`
  68.         i=`expr $i + 1`
  69.         [ "$i" = "$1" ] && {
  70.         StrT[$j]=""
  71.         i=`expr $i - 1`
  72.              echo -n "[${3};`expr 14 + $j`H ]" > /dev/tty
  73.              echo "[${3};`expr 14 + $j`H\c" > /dev/tty
  74.         continue
  75.                 } || {
  76.         C_Code=`getcon`
  77.         StrT[$i]="`echo $C_Code| awk '{printf("%c\n",$1)}'`"
  78.         StrT[$j]=`echo -n ${StrA}${StrT[$i]}`
  79.         StrT[$i]=""
  80.                      }
  81.                 }
  82.      C_Str=`echo ${StrT[*]} | sed 's/ //g'`
  83.      stty echo
  84.      echo  "[${3};14H${C_Str}\c" > /dev/tty
  85.      do
  86.      i=`expr $i + 1`
  87.      done
  88. do
  89.      [ $C_Code -eq 127 -o $C_Code -eq 27 ] && {
  90.      # <del>、<esc>丟棄輸入,還未加入處理功能鍵序列的代碼。
  91.        [ $5 -eq 1 ] && {
  92.         C_Str='';continue
  93.                 }||{
  94.         stty echo;eval $4="";break
  95.                 }
  96.         }
  97.      [ $C_Code -eq 13 ] && {
  98.        [ $5 -eq 1 -a "$C_Str" = "" ] && {
  99.         continue
  100.                 }||{
  101.         stty echo;eval $4=`echo -n $C_Str`;C_Str="";break
  102.                 }
  103.         }
  104.      [ "$i" = "$1" ] && {
  105.         stty echo;eval $4=`echo -n $C_Str`;C_Str="";break
  106.                 }
  107.      C_Str=''
  108.      set -A StrT
  109. done
  110. }
  111. # get_str 參數(shù):1-變量長(zhǎng)度 2-標(biāo)題 3-縱坐標(biāo) 4-變量名 5-是否可空
  112. clear
  113. conI=5
  114. get_str 2 機(jī)構(gòu)號(hào) $conI InstNo 1
  115. conI=`expr $conI + 1`
  116. get_str 1 資產(chǎn)主類(lèi) $conI AssetsClass 1
  117. conI=`expr $conI + 1`
  118. get_str 30 資產(chǎn)名稱(chēng) $conI AssetsName 1
  119. conI=`expr $conI + 1`
  120. get_str 30 建筑物地址 $conI AssetsAdd 0
  121. conI=`expr $conI + 1`
  122. get_str 20 房產(chǎn)證號(hào)碼 $conI AbstractTitle 0
  123. conI=`expr $conI + 1`
  124. get_str 20 土地證號(hào)碼 $conI TenureTitle 0
  125. conI=`expr $conI + 1`
  126. get_str 10 保管人 $conI Custodian 0
  127. conI=`expr $conI + 1`
  128. get_str 60 備注 $conI Remark 0
  129. echo "\n $AssetsClass $InstNo $AssetsName \n 地址:$AssetsAdd \n 房產(chǎn)證號(hào):$AbstractTitle \n土地證號(hào):$TenureTitle 保管人:$Custodian \n 備注:$Remark"
復(fù)制代碼

[ 本帖最后由 lvgq2001 于 2007-8-12 19:45 編輯 ]

getstr.tar

5 KB, 下載次數(shù): 56

在ksh環(huán)境下控制字符串輸入的腳本

論壇徽章:
1
榮譽(yù)會(huì)員
日期:2011-11-23 16:44:17
2 [報(bào)告]
發(fā)表于 2007-08-06 16:06 |只看該作者
不錯(cuò)~~, 支持原創(chuàng)! ^_^

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2007-08-06 16:34 |只看該作者
學(xué)習(xí)了
您需要登錄后才可以回帖 登錄 | 注冊(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