linux shell在while中用read从键盘输入
系统是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" > $tmp while read line
do
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
fi
done < $tmp rm -rf $tmp exit
这个脚本大体上没有什么错,不过在执行sudo apt-get purge $name这一行时,系统询问是否删除。但是这时却没有机会输入,而是直接中止执行。
xzc@xzc-HP-ProBook-4446s:~$ ./rm_i386_package.sh
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
下列软件包将被【卸载】:
libdrm-radeon1:i386*
升级了 个软件包,新安装了 个软件包,要卸载 个软件包,有 个软件包未被升级。
解压缩后会消耗掉 B 的额外空间。
您希望继续执行吗? [Y/n] 中止执行。
批量删除软件这操作,当然要一个确认,不能加个参数默认执行啊。
查了一下资料,大概是说
while read line
do
# xxx
done < $file
这样会把read指令重定向为文件$file,这时在while中调用read会直接在文件中取一行作为输入。所以在while中要把read重新定向为终端。上面的脚本稍微修改一行:
sudo apt-get purge $name < /dev/tty
这样就OK了。
linux shell在while中用read从键盘输入的更多相关文章
- linux shell获取键盘输入
linux shell从键盘获取输入 代码1: #!/bin/bash #提示“Input your choice:”,把用户的输入保存入变量choice_user中read -p "Inp ...
- linux shell脚本:在脚本中实现读取键盘输入,根据输入判断下一步的分支
echo please input “runbip” to run bip. variableName="null" while [ $variableName != " ...
- Linux shell 1-初步认识
1.什么是linux linux是一种操作系统,它可划分为以下四部分 1.linux内核(Linux系统的核心,负责管理系统内存,硬件驱动,文件系统等) 2.GNU工具(一组软件工具,提供一些类UNI ...
- LINUX SHELL脚本攻略笔记[速查]
Linux Shell脚本攻略笔记[速查] 资源 shell script run shell script echo printf 环境变量和变量 pgrep shell数学运算 命令状态 文件描述 ...
- Linux Shell 重定向与管道【转帖】
by 程默 在了解重定向之前,我们先来看看linux 的文件描述符. linux文件描述符:可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以 ...
- [转]linux shell数据重定向(输入重定向与输出重定向)详细分析
在了解重定向之前,我们先来看看linux 的文件描述符. linux文件描述符:可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以实现文件 ...
- Linux Shell 脚本入门
linux shell 脚本格式 #!/bin/sh#..... (注释)命令...命令... 使用vi 创建完成之后需设置权限 chmod +x filename.sh 执行命令: ./filena ...
- Linux Shell系列教程之(十六) Shell输入输出重定向
本文是Linux Shell系列教程的第(十六)篇,更多Linux Shell教程请看:Linux Shell系列教程 Shell中的输出和输入的重定向是在使用中经常用到的一个功能,非常实用,今天就为 ...
- Linux Shell系列教程之(十五) Shell函数简介
本文是Linux Shell系列教程的第(十五)篇,更多Linux Shell教程请看:Linux Shell系列教程 函数可以将一个复杂功能划分成若干模块,从而使程序结构更加清晰,代码重复利用率更高 ...
随机推荐
- Sequence(组合数学,集合不同元素的个数)
Sequence [组合数学] 时间限制: 3 Sec 内存限制: 128 MB 提交: 138 解决: 52 [提交][状态][讨论版] 题目描述 在某个夜黑月高的晚上,!!!,原谅我编不下去了 ...
- office2007序列号/密钥
绝对可以用的许可证:V9MTG-3GX8P-D3Y4R-68BQ8-4Q8VD
- Apache https 配置指南
Windows Apache HTTPS配置创建下面3个目录: C:\Program Files\Apache Group\Apache2\conf\sslC:\Program Files\Apach ...
- hadoop部署工具与配置工具
https://github.com/xianglei/phpHiveAdmin 随着Hadoop的推出,大数据处理实现了技术上的落地.但是对于一般的公司和开发者而言,Hadoop依旧是一个陌生或者难 ...
- mybatis的详解
最新不知道脑子怎么想的,突然对mybatis特别感兴趣,之前在学校的时候学过两天,有了一个简单的认识,工作以后,项目中也有用到,趁着兴趣还在,抓紧整理一个文档,方便学习mybatis,同时,自己也在巩 ...
- android上line-height的问题
关于line-height大家应该非常熟悉了吧,就是用来做垂直居中的,屡试不爽,基本上没有什么问题,但是最近一个项目,测试提了一个bug,看图吧. 从别处窃的图,这个问题只有安卓上才能复现,做了dem ...
- arcmap从excel坐标数据生成点shp文件
概述 今天试图在ArcMap中将excel数据转成点文件,在"Display XY Data"的时候,无法选择X,Y字段,很是纳闷,原来Excel中列的格式是文本,导致无法选择.有 ...
- ORACLE管理存储结构之物理机构+逻辑结构【weber出品】
一.数据库的存储结构有物理结构和逻辑结构组成的 物理结构:物理上,oracle是由一些操作系统文件组成的 SQL> select name from v$datafile; NAME ----- ...
- .NET定时发送邮件
添加一个全局应用程序类Global.asax 代码会在访问网站时运行 Global.asax代码: void Application_Start(object sender, EventArgs e) ...
- const的重载
class A { private: int a; public: A(int x) :a(x){}//构造函数并不能重载 void display(){ cout << "no ...