在shell脚本中,可以用几种不同的方式读入数据,可以使用键盘标准输入,也可以指定一个文件作为输入。也可以使用标准终端屏幕输出,还可以使用文件作为输出。
echo
使用此命令可以显示文本行或变量,或者把字符串输入到文件。它的一般形式为:
echo string
echo命令有很多功能,其中最常用的是下面几个:
\c :不换行
\f :进纸
\t :跳格
\n :换行
在shell中必须要使用反斜杠\来使shell忽略它的特殊含义。
read
可以使用read从键盘或文件的某一行文本中读入信息,并将其赋给一个变量。如果只指定了一个变量,那么read将会把所有的输入赋给该变量,直至遇到第一个文件结束符或回车。
它的一般形式为:
read varible1 varible2
如果我们将三个单词读入两个变量,第一个单词将被赋给第一个变量,但由于变量词少于单词数,字符串后面的部分将被全部赋给第二个变量。
cat
cat是一个简单而通用的命令,可以用它来显示文件内容,创建文件,还可以用它来显示控制字符。cat不会在文件分页符处停下来,它会一次显示完整个文件。但我们可以使用more或者把cat的命令的输出通过管道传递给另外一个具有分页功能的命令。
例如cat myfile | more, cat myfile | pg
cat 的一般形式为:
cat [options] filename1 … filename2 …
-v 显示控制字符
cat 支持重定向命令 >
管道
我们可以通过管道把一个命令的输出传递给另一个命令作为输入。管道的一般形式为:
命令1 | 命令2
例如ls | grep quarter1.doc
sed、awk和grep都很适合用管道。比如:who| awk ‘{print $1”\t” $2}’,这个例子中who命令的输出通过管道传递给awk命令,以便只显示用户名和所在的终端。
tee
tee命令作用可以用字母T来形象地表示。它把输出的一个副本输送到标准输出,另一个副本拷贝到相应的文件中。我们可以使用它在看到输出的同时,将其存入一个文件。
一般形式为:tee –a files
-a : 表示追加到文件末尾
我们可以用下面的命令在使用who命令将结果输出到屏幕上的同时,将结果保存在who.out文件。
标准输入,输出和错误
我们在shell中执行命令的时候,每个进程都和三个打开的文件相联系,并使用文件扫描符来引用这些文件。
文件重定向
在执行命令时,我们可以指定命令的标准输入,输出和错误。
exec
exec命令可以用来替代当前shell,即并没有启动shell。
它的一般形式为exec command