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

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

Chinaunix

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

shell讀取命令行輸入后,循環(huán)驗(yàn)證問(wèn)題? [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2012-03-19 12:00 |只看該作者 |倒序?yàn)g覽
a.wd文件:
1_a
2_b
3_c

希望結(jié)果按行讀取,以下劃線分隔,命令行打印顯示每行第1部分,人工輸入第2部分。
驗(yàn)證第2部分輸入與源文件第2部分字符一致時(shí)候,繼續(xù)下一行流程,如果人工輸入不對(duì)循環(huán)直到輸入正確為止;
例如:
#讀取第一行時(shí)屏幕打印
1 pls input ew:
#輸入正確的當(dāng)前行第2部分:
a
#進(jìn)入下一個(gè)循環(huán)流程:
2 pls input ew:



我自己寫了一個(gè)shell,但是一下就把所有行循環(huán)輸出了。怎么修改請(qǐng)指點(diǎn)一下。
while read line
do
        while :
        do
                cw=`echo $line | awk -F"_" '{print $1}'`
                echo $cw "pls input ew:"
                ew=`echo $line | awk -F"_" '{print $2}'`
                read sign
                if [ "$sign" == "$ew" ];then
                echo $sign
                        break
                fi
        done
done <  a.wd

論壇徽章:
2
射手座
日期:2014-10-10 15:59:4715-16賽季CBA聯(lián)賽之上海
日期:2016-03-03 10:27:14
2 [報(bào)告]
發(fā)表于 2012-03-19 12:35 |只看該作者
回復(fù) 1# spouter


    awk:
  1. awk -F'_' '{a[$1]=$2}
  2. END{i=1;
  3. while(getline line <"/dev/tty"){if(i==3)break;if(a[i]==line){print  "pls input next!";i++}else{print  "sorry! pls try again!"}}}' file
  4. a
  5. pls input next!
  6. b
  7. pls input next!
  8. c

  9. awk -F'_' '{a[$1]=$2}
  10. END{i=1;
  11. while(getline line <"/dev/tty"){if(i==3)break;if(a[i]==line){print  "pls input next!";i++}else{print  "sorry! pls try again!"}}}' file
  12. d
  13. sorry! pls try again!
  14. a
  15. pls input next!
  16. d
  17. sorry! pls try again!
  18. c
  19. sorry! pls try again!
  20. b
  21. pls input next!
  22. c
復(fù)制代碼

論壇徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亞冠之浦和紅鉆
日期:2015-06-23 19:10:532015亞冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16賽季CBA聯(lián)賽之山東
日期:2016-01-31 18:25:0515-16賽季CBA聯(lián)賽之四川
日期:2016-02-16 16:08:30程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2016-06-29 06:20:002017金雞報(bào)曉
日期:2017-01-10 15:19:5615-16賽季CBA聯(lián)賽之佛山
日期:2017-02-27 20:41:19
3 [報(bào)告]
發(fā)表于 2012-03-19 12:52 |只看該作者
read sign </dev/tty

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2012-03-19 12:55 |只看該作者
本帖最后由 Perl_Er 于 2012-03-19 14:13 編輯

標(biāo)準(zhǔn)輸入變了,所以你的第二個(gè)read的輸入不是STDIN,而是那個(gè)文件,所以在第二個(gè)read的時(shí)候要回復(fù)STDIN
  1. -bash-3.2$ ./verification.sh
  2. Please type for 1:
  3. a
  4. You are right
  5. Please type for 2:
  6. b
  7. You are right
  8. Please type for 3:
  9. c
  10. You are right
  11. -bash-3.2$ cat verification.sh
  12. #!/bin/bash

  13. exec 3<&0
  14. exec <verification.txt
  15. exec 4<&0
  16. while read line
  17. do
  18.         field1=${line%_*}
  19.         field2=${line#*_}
  20.         exec 0<&3
  21.         echo "Please type for ${field1}:"
  22.         read f2
  23.         while [ "${f2}" != "${field2}" ]
  24.         do
  25.                 echo "You typed incorrectly"
  26.                 echo "Please type for ${field1}:"
  27.                 read f2
  28.         done
  29.         echo "You are right"
  30.         exec 0<&4
  31. done
  32. -bash-3.2$ cat verification.txt
  33. 1_a
  34. 2_b
  35. 3_c
  36. -bash-3.2$
復(fù)制代碼
回復(fù) 1# spouter


   

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2012-03-19 12:56 |只看該作者
waker 發(fā)表于 2012-03-19 12:52
read sign



原來(lái)是這樣!受教了,多謝!

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2012-05-08 20:31 |只看該作者
本帖最后由 maojian60 于 2012-05-08 20:37 編輯

改成 for循環(huán) 可以

#!/bin/bash
#
#
for line in `cat file.txt`
do

while :
do
aa=`echo $line |awk -F "_" '{print $1}'`
echo -n "$aa please input:"
read cc
bb=`echo $line |awk -F "_" '{print $2}'`
if [ $cc = $bb ]
  then
  break
  else
  echo "input wrong"
  fi
done

done
您需要登錄后才可以回帖 登錄 | 注冊(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)專區(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