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

 

1   echo
使用e c h o命令可以显示文本行或变量,或者把字符串输入到文件。它的一般形式为:
echo string
e c h o命令有很多功能,其中最常用的是下面几个:
\c   不换行。
\f   进纸。
\t   跳格。
\n   换行。
如果希望提示符出现在输出的字符串之后,可以用:

echo “What is your name :\c”
read name

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

what is your name:zjtst1-bg-proc%

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

$ echo "The red pen ran out of ink"

如果希望在e c h o命令输出之后附加换行,可以使用\ n选项

pg echod
#!/bin/sh
echo “this echo’s  3 new lines\n\n\n”
echo “ok”

运行时会出现如下输出:

echod
this echo’s 3 blank lines

 

 

ok

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

zjtst1-bg-proc%echo "here is a tab\there are two tabs\t\tok"
here is a tab   here are two tabs               ok

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

zjtst1-bg-proc%echo "the log files have all been done">echo
或者可以追加到一个文件的末尾,这意味着不覆盖原有的内容:

zjtst1-bg-proc%echo "logname carried them out at 'date'" >> echo

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

zjtst1-bg-proc%more echo
the log files have all been done
logname carried them out at 'date'

初涉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