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

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
123下一頁
最近訪問板塊 發(fā)新帖
查看: 9025 | 回復: 22
打印 上一主題 下一主題

[已解決]echo xxx | read name;怎么name為空?? [復制鏈接]

論壇徽章:
10
天蝎座
日期:2013-09-22 22:32:23程序設計版塊每日發(fā)帖之星
日期:2016-08-07 06:20:00lufei
日期:2016-06-17 17:38:40程序設計版塊每日發(fā)帖之星
日期:2016-06-12 06:20:002016科比退役紀念章
日期:2016-05-31 15:47:20CU十四周年紀念徽章
日期:2016-05-27 12:24:562015年亞洲杯之阿曼
日期:2015-05-03 21:01:352015年辭舊歲徽章
日期:2015-03-03 16:54:15天蝎座
日期:2013-10-20 21:05:24程序設計版塊每日發(fā)帖之星
日期:2016-08-11 06:20:00
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2011-03-30 12:26 |只看該作者 |倒序瀏覽
本帖最后由 liion631818 于 2011-03-30 22:10 編輯

  1. echo xxx | read name
  2. if [ -z "$name" ]; then
  3.     echo ok
  4. fi
復制代碼
為什么ok會被打印出來?
原以為$name=xxx,怎么不對?

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


    這個么?
  1. echo xxx | while read name
  2. do
  3. if [ -z "$name" ]
  4. then
  5. echo ok
  6. fi
  7. done
復制代碼

論壇徽章:
10
天蝎座
日期:2013-09-22 22:32:23程序設計版塊每日發(fā)帖之星
日期:2016-08-07 06:20:00lufei
日期:2016-06-17 17:38:40程序設計版塊每日發(fā)帖之星
日期:2016-06-12 06:20:002016科比退役紀念章
日期:2016-05-31 15:47:20CU十四周年紀念徽章
日期:2016-05-27 12:24:562015年亞洲杯之阿曼
日期:2015-05-03 21:01:352015年辭舊歲徽章
日期:2015-03-03 16:54:15天蝎座
日期:2013-10-20 21:05:24程序設計版塊每日發(fā)帖之星
日期:2016-08-11 06:20:00
3 [報告]
發(fā)表于 2011-03-30 12:36 |只看該作者
回復 2# yinyuemi

按照你寫的代碼執(zhí)行,$name的值是echo 打出來的值了,但是我上面寫的怎么就不行呢????

論壇徽章:
2
射手座
日期:2014-10-10 15:59:4715-16賽季CBA聯(lián)賽之上海
日期:2016-03-03 10:27:14
4 [報告]
發(fā)表于 2011-03-30 12:41 |只看該作者
回復 3# liion631818


  你那樣寫,  read name,和echo xxx沒有關(guān)系

試試這段代碼,看看和剛才那個的區(qū)別:
  1. read name
  2. echo $name
  3. if [ -z "$name" ]; then

  4.     echo ok

  5. fi
復制代碼

論壇徽章:
10
天蝎座
日期:2013-09-22 22:32:23程序設計版塊每日發(fā)帖之星
日期:2016-08-07 06:20:00lufei
日期:2016-06-17 17:38:40程序設計版塊每日發(fā)帖之星
日期:2016-06-12 06:20:002016科比退役紀念章
日期:2016-05-31 15:47:20CU十四周年紀念徽章
日期:2016-05-27 12:24:562015年亞洲杯之阿曼
日期:2015-05-03 21:01:352015年辭舊歲徽章
日期:2015-03-03 16:54:15天蝎座
日期:2013-10-20 21:05:24程序設計版塊每日發(fā)帖之星
日期:2016-08-11 06:20:00
5 [報告]
發(fā)表于 2011-03-30 12:46 |只看該作者
回復 4# yinyuemi

先謝謝你認真解答哦~~
   
      這個name肯定有值了,因為是直接從STDIN獲取到的
      但是我的疑問在于:
              echo 打印的值不是通過管道傳到read作為輸入了嗎?

論壇徽章:
0
6 [報告]
發(fā)表于 2011-03-30 12:46 |只看該作者
回復 3# liion631818


    管道左邊一個進程 右邊一個進程 左邊打印xxx  右邊把它存在變量name里面 然后就都退出了
   父進程里沒有name這個變量 當然沒有了  
    之前寫的可以是 因為while都是在 右邊那個進程里的

論壇徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年紀念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役紀念章
日期:2022-04-24 14:33:24
7 [報告]
發(fā)表于 2011-03-30 12:47 |只看該作者
回復 1# liion631818


打開ABS,看看第48頁。

Advanced Bash-Scripting Guide 3.9.1 中文版.pdf
http://www.72891.cn/thread-1610033-1-1.html

論壇徽章:
10
天蝎座
日期:2013-09-22 22:32:23程序設計版塊每日發(fā)帖之星
日期:2016-08-07 06:20:00lufei
日期:2016-06-17 17:38:40程序設計版塊每日發(fā)帖之星
日期:2016-06-12 06:20:002016科比退役紀念章
日期:2016-05-31 15:47:20CU十四周年紀念徽章
日期:2016-05-27 12:24:562015年亞洲杯之阿曼
日期:2015-05-03 21:01:352015年辭舊歲徽章
日期:2015-03-03 16:54:15天蝎座
日期:2013-10-20 21:05:24程序設計版塊每日發(fā)帖之星
日期:2016-08-11 06:20:00
8 [報告]
發(fā)表于 2011-03-30 13:09 |只看該作者
本帖最后由 liion631818 于 2011-03-30 13:13 編輯
回復  liion631818


    管道左邊一個進程 右邊一個進程 左邊打印xxx  右邊把它存在變量name里面 然后 ...
lkk2003rty 發(fā)表于 2011-03-30 12:46


1:
  1. echo xxx | read name
復制代碼
我用下面代碼試了

  1.       echo xxx | { read name;  echo $name;}
  2.       echo ------------------
  3.       echo ${name-err}
  4.    
復制代碼
打印結(jié)果是:
    xxx
    ------------------------
    err
    所以,你說的是對的,管道左邊跟右邊都是一個進程,右邊進程返回后,name變量是不存在的,所以echo打印空
2:

  1.        echo xxx | while read name; do
  2.                echo $name
  3.        done
  4.        echo ${name-err}
  5.    
復制代碼
打印的結(jié)果是:
    xxx
    err
   所以右邊進程退出后name還是沒有定義的

謝謝你的回復,看來的好好看看shell進程了~~~


順帶提個問題, 為什么管道左邊和右邊是2個進程, 那

  1.      echo $; echo xxx | { read name; echo $; }
  2.   
復制代碼
打印的$$的值是一樣的呢???
  問題越來越多了~~~

論壇徽章:
10
天蝎座
日期:2013-09-22 22:32:23程序設計版塊每日發(fā)帖之星
日期:2016-08-07 06:20:00lufei
日期:2016-06-17 17:38:40程序設計版塊每日發(fā)帖之星
日期:2016-06-12 06:20:002016科比退役紀念章
日期:2016-05-31 15:47:20CU十四周年紀念徽章
日期:2016-05-27 12:24:562015年亞洲杯之阿曼
日期:2015-05-03 21:01:352015年辭舊歲徽章
日期:2015-03-03 16:54:15天蝎座
日期:2013-10-20 21:05:24程序設計版塊每日發(fā)帖之星
日期:2016-08-11 06:20:00
9 [報告]
發(fā)表于 2011-03-30 13:10 |只看該作者
回復  liion631818


打開ABS,看看第48頁。

Advanced Bash-Scripting Guide 3.9.1 中文版.pdf
Shell_HAT 發(fā)表于 2011-03-30 12:47


哦~~謝謝,就去看看,希望找到答案

論壇徽章:
2
射手座
日期:2014-10-10 15:59:4715-16賽季CBA聯(lián)賽之上海
日期:2016-03-03 10:27:14
10 [報告]
發(fā)表于 2011-03-30 13:12 |只看該作者
回復 8# liion631818


    ”while+then“ 這是什么搭配?
while -do-done

if-then-fi
您需要登錄后才可以回帖 登錄 | 注冊

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

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP