Shell如何接收变量输入


Posted in 面试题 onSeptember 24, 2012
在shell中使用read 命令接收变量输入,
语法:
read variable [variable......]
例:
$ cat color6
echo This program prompts for user input
echo “please enter your favorite two colors -> \c”
read color_a color_b
echo The colors you entered are: $color_b $color_a
$ chmod +x color6
$ color6
This program prompts for user input
Please enter your favorite two colors -> red blue
The colors you entered are: blue red
$ color6
This program prompts for user input
Please enter you favorite two colors -> red blue tan
The color you enterd are :blue tan red

用户使用命令行参数传递信息进程序,在命令执行之前,用户必须知道正确的语法。有一种情况,你想要在用户执行程序的时候提示他输入这些参数。read命令就是用来在程序执行的时候收集终端键入的信息。
通常使用echo命令来提供用户一个提示,让用户知道程序正在等待一些输入,同时通知用户应该输入的类型。因此,每一个read命令应该在echo命令前面。
read命令会给出一个变量名的列表,这些变量会被用户在提示符下输入的词赋值(以空格分隔)。如果read命令定义的变量比输入的词要多,剩余变量会被赋空值。如果用户输入的词要比变量多,剩余的数据会赋给列表中的最后一个变量。
一旦被赋值,你就可以象其他的shell变量一样存取这些变量。

以下例子提示用户输入要被安装的文件名:
$ cat my_install3
echo $0 will install files into your bin directory
echo “Enter the names of the files -> \c”
read filenames
mv $filenames $HOME/bin
echo Instllation is complete
ctrl + d
$ chmod +x my_install13

$ my_install13
my_install13 will install files into your bin directory
Enter the names of the files -> f1 f2
Installaton is complete

这个安装会提示用户输入chmod和移动到$HOME/bin的文件名。这个程序给用户更多的关于应该输入数据情况的指引。而不像install2中用户必须在命令行中提供文件名。用户使用程序不需要特殊的语法。程序让用户确切地知道要输入什么。所有的输入的文件名都会被赋值给变量filenames。

Tags in this post...

面试题 相关文章推荐
AOP的定义以及作用
Sep 08 面试题
What is the purpose of Void class? Void类的作用是什么?
Oct 31 面试题
公司JAVA开发面试题
Apr 02 面试题
如何打印出当前源文件的文件名以及源文件的当前行号
Apr 05 面试题
SQL Server 2000数据库的文件有哪些,分别进行描述
Mar 30 面试题
Oracle性能调优原则
May 03 面试题
介绍一下如何利用路径遍历进行攻击及如何防范
Jan 19 面试题
网络安全类面试题
Aug 01 面试题
在C#中如何实现多态
Jul 02 面试题
shell程序中如何注释
Jan 28 面试题
Linux如何压缩可执行文件
Mar 27 面试题
AJAX的全称是什么
Nov 06 面试题
什么是makefile? 如何编写makefile?
Aug 08 #面试题
介绍一下grep命令的使用
Jun 28 #面试题
Linux中如何用命令创建目录
Dec 02 #面试题
Linux不知道文件后缀名怎么判断文件类型
Apr 26 #面试题
Linux管理员面试题 Linux admin interview questions
Nov 01 #面试题
shell程序中如何注释
Feb 17 #面试题
Linux Interview Questions For software testers
Jun 02 #面试题
You might like
一首老MP3,致敬WAR3经典
2021/03/08 魔兽争霸
PHP设计模式之迭代器模式的深入解析
2013/06/13 PHP
ThinkPHP基本的增删查改操作实例教程
2014/08/22 PHP
从刷票了解获得客户端IP的方法
2015/09/21 PHP
thinkPHP下的widget扩展用法实例分析
2015/12/26 PHP
PHP请求远程地址设置超时时间的解决方法
2016/10/29 PHP
document.createElement()用法及注意事项(ff下不兼容)
2013/03/13 Javascript
JScript中的条件注释详解
2015/04/24 Javascript
JavaScript中调用函数的4种方式代码实例
2015/07/08 Javascript
JS实现上下左右对称的九九乘法表
2016/02/22 Javascript
js创建对象几种方式的优缺点对比
2016/09/28 Javascript
js实现简单的网页换肤效果
2017/01/18 Javascript
详解vue跨组件通信的几种方法
2017/06/15 Javascript
基于angular-utils-ui-breadcrumbs使用心得(分享)
2017/11/03 Javascript
bootstrap fileinput插件实现预览上传照片功能
2018/01/23 Javascript
Vue父组件监听子组件生命周期
2020/09/03 Javascript
[01:11]回顾历届DOTA2国际邀请赛中国区预选赛
2017/06/26 DOTA
[43:24]VG vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python实现的石头剪子布代码分享
2014/08/22 Python
Python字符串特性及常用字符串方法的简单笔记
2016/01/04 Python
Python scikit-learn 做线性回归的示例代码
2017/11/01 Python
python使用xlsxwriter实现有向无环图到Excel的转换
2018/12/12 Python
Python大数据之使用lxml库解析html网页文件示例
2019/11/16 Python
Python使用socketServer包搭建简易服务器过程详解
2020/06/12 Python
Python过滤序列元素的方法
2020/07/31 Python
浅析HTML5的WebSocket与服务器推送事件
2016/02/19 HTML / CSS
美国餐厅用品和厨房设备批发网站:KaTom Restaurant Supply
2018/01/27 全球购物
电子商务专员岗位职责
2013/12/11 职场文书
2014年公司植树节活动方案
2014/03/04 职场文书
Go Gin实现文件上传下载的示例代码
2021/04/02 Golang
Go语言操作数据库及其常规操作的示例代码
2021/04/21 Golang
vue使用v-model进行跨组件绑定的基本实现方法
2021/04/28 Vue.js
python基础之文件处理知识总结
2021/05/23 Python
用Python爬取某乎手机APP数据
2021/06/15 Python
MYSQL 的10大经典优化案例场景实战
2021/09/14 MySQL
JavaScript中10个Reduce常用场景技巧
2022/06/21 Javascript