国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Linux Shell > 正文

linux shell在while中用read從鍵盤輸入的實現

2020-07-27 18:59:08
字體:
來源:轉載
供稿:網友

系統是ubuntu 14.04 64bit,之前曾想安裝Stream來玩dota2,但最終沒成功。由于Stream只有32bit,安裝Stream時也安裝了大量32bit的庫。刪除Stream后,這些庫也一直沒管,今天忽然心血來潮,想清理一下系統,把不必要的32bit庫都干掉。

dpkg -l | grep "i386"看一下,32bit庫太多,一個個敲sudo apt-get purge xxx顯然有點累,分析了一下輸出,

格式大概如下:

rc libkrb5support0:i386  1.12+dfsg-2ubuntu4  i386 MIT Kerberos runtime libraries - Support library

第2列為包名,第4列是平臺,于是決定寫一個腳本來刪除:

#!/bin/sh#rc libkrb5support0:i386  1.12+dfsg-2ubuntu4  i386 MIT Kerberos runtime libraries - Support library##pks=`dpkg -l | grep "i386" | awk '{print $2,$4}'`tmp="tmp.file"echo "$pks" > $tmpwhile read linedo  name=`echo $line | awk '{print $1}'`  platform=`echo $line | awk '{print $2}'`  # if [ == ] in bash,buf in dash,if [ = ]  if [ "$platform" = "i386" ];then    sudo apt-get purge $name  fidone < $tmprm -rf $tmpexit 0

這個腳本大體上沒有什么錯,不過在執行sudo apt-get purge $name這一行時,系統詢問是否刪除。但是這時卻沒有機會輸入,而是直接中止執行。

xzc@xzc-HP-ProBook-4446s:~$ ./rm_i386_package.sh 正在讀取軟件包列表... 完成正在分析軟件包的依賴關系樹    正在讀取狀態信息... 完成    下列軟件包將被【卸載】: libdrm-radeon1:i386*升級了 0 個軟件包,新安裝了 0 個軟件包,要卸載 1 個軟件包,有 306 個軟件包未被升級。解壓縮后會消耗掉 0 B 的額外空間。您希望繼續執行嗎? [Y/n] 中止執行。

批量刪除軟件這操作,當然要一個確認,不能加個參數默認執行啊。

查了一下資料,大概是說

while read linedo# xxxdone < $file

這樣會把read指令重定向為文件$file,這時在while中調用read會直接在文件中取一行作為輸入。所以在while中要把read重新定向為終端。上面的腳本稍微修改一行:

sudo apt-get purge $name < /dev/tty

這樣就OK了。

以上就是小編為大家帶來的linux shell在while中用read從鍵盤輸入的實現全部內容了,希望大家多多支持武林網~

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 海门市| 和林格尔县| 玛纳斯县| 奉化市| 监利县| 焦作市| 柳林县| 岳池县| 耿马| 沐川县| 澎湖县| 辽阳县| 望城县| 德庆县| 长垣县| 万州区| 莱州市| 邓州市| 乌恰县| 湘潭市| 炉霍县| 孝昌县| 克山县| 甘泉县| 随州市| 谢通门县| 武宣县| 临安市| 兴安县| 民乐县| 运城市| 柘荣县| 高密市| 承德市| 五大连池市| 克什克腾旗| 广水市| 大关县| 林口县| 上蔡县| 莱阳市|