linux基础(十二)—-linux编程基础—-与用户交互
最后更新于:2022-04-01 11:24:43
linux程序不像其它语言一样有界面上的按钮交互等,所以一般需要获取用户的键盘输入。
这次学习如何通过键盘获取用户输入的信息及将信息显示在屏幕上。
## 读取键盘输入
用户界面将信息显示在屏幕上,提示用户在键盘上按键。用户界面就是引导用户去做程序设计者想做的。
在举一个例子来说明如何指示计算机读人字符,并把它们赋给一个字符串变量,如下例所示:
~~~
#!/bin/bash
clear
echo " "
echo "Enter Yvur First Name:"
read FirstName
~~~
指令说明如下:
首先,#!/bin/bash指示计算机在清屏(clear)前,启动hash shel。
其次,计算机在屏幕上跳过一个空行(echo “ ”),并告诉用户要输入的数据类型( echo "Enter Your FirstName:”)
保留字read指示计算机读取用户在键盘上输人的所有字符,并把它们存放到字符串变量FirstName中。不过,这个命令仅在用户按了回车键之后才开始执行。
这里 无论用户输入 数字 字符串 或者混合输入 使用的代码都是一样的。
## 显示用户输入的数据
在程序获取用户输人的信息之后,就应当对它进行必要的处理。
程序既可以把数据用于计算,也可以把它存储在磁盘文件之中,甚至可以对它进行读者所能想像的任何处理。
对信息最常用的处理方式之一就是把它显示在屏幕上,另外就是把它与己有的信息进行比较。
但是,目前只需完成简单的信息显示工作就可以了。
一个典型的linux程序常叫用户输入一串字符,然后将它们存入一个变量中,接着在屏幕上把它们显示出来。
显示字符串的方式有两种,如:
将各个字符都显示在同一行上。
先将一些字符与其他的一些字符合并起来,再将它们显示在同一行上。
可以用指令echo “$variable name”,让计算机仅仅显示用户输人程序中的字符(当然,应当用实际的变量来取代variable name)。
还可以把各个字符放在引号(””)之间,将它们合并起来再显示,如下面的代码所示。在
这段代码中,程序请求用户输人他们的名字,然后显示一条欢迎他们的信息。例如:
~~~
#!/bin/bash
clear
echo " "
echo "Enter Your First Name; "
read FirstName
echo "Hello, $FirstName"
~~~
尽管在这个例子中程序增加了一个文本Hello,但是仍可以将这个字符串存储在另一个字符串变量中(在下面的例子中就是这么做的)。利用下面的代码,可以先指示计算机存取变量$Greeting并显示该字符串后,再存取变量$FirstName并显示其中的那些字符。例如:
~~~
#!/bin/bash
clear
declare FirStName, Greeting
echo $Greeting ="Hello,”
echo " "
echo "Enter Your First Name; "
read FirstName
echo "$Greeting $FirstName"
~~~
## 把数据存入文件
将用户输人的数据存入磁盘文件是经常要做的事。
Linus Torralds ( Linux)的设计者)认为无论程序什么时候用保留字echo显示信息,它都要用到屏幕。
这对大多数程序而言确是如此,但是也可以改变程序,让它将数据显示到其他的地方,比如一个文件中。这种处理过程称之为重定向(redirection ),它的意思是指改变数据正常的流动方向。
### 覆盖写入
这种重定向工作其实一点也不难做。只要看看下面的例子,就会知道怎么做了。注意,除了最后一条语句外,其他的语句在前面都用过,如下例所示:
~~~
#!/bin/bash
clear
echo " "
echo "Enter Your First Name;”
read FirstName
echo "Enter Your Last Name;”
read LastName
echo "$FirstName $LastName" >employees. dat
~~~
大于号(>)指示计算机把变量的值存人一个名字为employees. dat的文件中,而不是显示在屏幕上。
关于重定向符大于号(>)有以下两点值得读者注意:
如果在程序中用大于号(>)向个文件中存信息,计算机将创建一个新的文件。
如果计算机中存在一个同名文件,它将用新的信息覆盖旧文件中的内容,文件中的原有信息将被丢失。所以,用它一定要小心。
### 向文件中添加数据
用双大于号(>>)可以将信息添加至文件的末尾而不覆盖文件中的已有数据。
下面的代码与上一个例子的代码几乎相同—只是它是将新的信息添加到文件中(假设该文件已经存在)。如果读者在程序中规定的文件不存在,它将会白动创建一个新文件。例:
~~~
#!/bin/bash
clear
echo " "
echo "Enter Your First Name;”
read FirstName
echo "Enter Your Last Name;”
read LastName
echo "$FirstName $LastName" >>employees. dat
~~~
## 显示存入文件中的数据
在程序中使用实用程序cat,可以把存入一个文件中的信息显示到计算机屏幕上,如下面的例子所示。
将一个实用程序名放入程序,就像在命令行上键入实用程序名一样,也可以让计算机运行它。
程序员常把这个过程说成是调用一个实用程序。例如:
~~~
#!/bin/bash
clear
echo "Employee Data"
echo " "
cat employees. dat
~~~
注意,在最后一行cat命令之后,跟有一个文件名。就是我们之前写入的文件名。