时间:2021-05-22
系统是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从键盘输入的实现全部内容了,希望大家多多支持~
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
1.1shellread简介要与Linux交互,脚本获取键盘输入的结果是必不可少的,read可以读取键盘输入的字符。shell作为一门语言,自然也具有读数据的功
shell脚本读取数据有以下几种方式:1.键盘输入,默认2.从文件中读取3.通过管道命令传递echo的功能:\c:不换行\f:进纸\t:跳格\n:换行\表示转义
本文实例讲述了C++处理键盘输入的方法,可实现简单处理键盘输入,分享给大家供大家参考。具体实现方法如下:需要响应WM_CHAR消息:复制代码代码如下:#incl
读取键盘输入Python提供了两个内置函数从标准输入读入一行文本,默认的标准输入是键盘。如下:raw_inputinputraw_input函数raw_inpu
在练习Java的Scanner时,EditPlus如何读取从键盘输入的数呢?例如如下程序,编译通过,运行时却输入不了数据:packagemyP101;impor