linux shell编程输入输出,Linux shell编程 11 shell输入输出之 echo、read

在s h e l l脚本中,可以用几种不同的方式读入数据:可以使用标准输入—缺省为键盘,或者指定一个文件作为输入。对于输出也是一样:如果不指定某个文件作为输出,标准输出总是和终端屏幕相关联。如果所使用命令出现了什么错误,它也会缺省输出到屏幕上,如果不想把这些信息输出到屏幕上,也可以把这些信息指定到一个文件中。

5.1 echo

使用e c h o命令可以显示文本行或变量,或者把字符串输入到文件。它的一般形式为:

echo string

e c h o命令有很多功能,其中最常用的是下面几个:

c 不换行。

进纸。

跳格。

换行。

如果希望提示符出现在输出的字符串之后,可以用

上面的命令将会有如下的显示:

其中“□”是光标。

如果想在输出字符之后,让光标移到下一行,可以用:

$ echo "The red pen ran out of ink"

还可以用e c h o命令输出转义符以及变量。在下面的例子中,你可以让终端铃响一声,显示出$ H O M E目录,并且可以让系统执行 t t y命令(注意,该命令用键盘左上角的符号,法语中的抑音符引起来,不是单引号, )。

如果是LINUX系统,那么......必须使用- n选项来禁止echo命令输出后换行:

339840cd997c615501cd5101438b31ba.png

4a99da1125c58f95278e21490a9e7cb8.png

还可以在e c h o语句中使用跳格符,记住别忘了加反斜杠 :

22a726746848cddc588510bc104e70e3.png

如果想把一个字符串输出到文件中,使用重定向符号 >。在下面的例子中一个字符串被重定向到一个名为m y f i l e的文件中:

$ echo "The log files have all been done"> myfile

或者可以追加到一个文件的末尾,这意味着不覆盖原有的内容:

$ echo "$LOGNAME carried them out at `date`">>myfile

现在让我们看一下m y f i l e文件中的内容:

初涉s h e l l的用户常常会遇到的一个问题就是如何把双引号包含到 e c h o命令的字符串中。

引号是一个特殊字符,所以必须要使用反斜杠 来使s h e l l忽略它的特殊含义。假设你希望使用e c h o命令输出这样的字符串: “/ d e v / r m t 0”,那么我们只要在引号前面加上反斜杠 即可:

$ echo ""/dev/rmt0""

" / d e v / r m t 0 "

5.2 read

可以使用r e a d语句从键盘或文件的某一行文本中读入信息,并将其赋给一个变量。如果只指定了一个变量,那么 r e a d将会把所有的输入赋给该变量,直至遇到第一个文件结束符或回车。

它的一般形式为:

read varible1 varible2 ...

在下面的例子中,只指定了一个变量,它将被赋予直至回车之前的所有内容:

在下面的例子中,我们给出了两个变量,它们分别被赋予名字和姓氏。 s h e l l将用空格作为变量之间的分隔符:

如果输入文本域过长, Shell 将所有的超长部分赋予最后一个变量。下面的例子,假定要读取变量名字和姓,但这次输入三个名字;结果如下;

在上面的例子中,如果我们输入字符串 John Lemon Doe,那么第一个单词将被赋给第一个变量,而由于变量数少于单词数,字符串后面的部分将被全部赋给第二个变量。

在编写s h e l l脚本的时候,如果担心用户会对此感到迷惑,可以采用每一个 r e a d语句只给一个变量赋值的办法:

83834b1819070ee69078eba7abf63135.png

用户在运行上面这个脚本的时候,就能够知道哪些信息赋给了哪个变量。

ba3849ed92edcafe0ed7b55e78262243.png

举报/反馈

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值