下面的所有环境都在在REDHAT LINUX9下试验的 在LINUX中,要使转义符生效,需加参数-e 从echo的变量开始说起 如:e c h o命令输出转义符以及变量。
# echo -e "/007your home is $HOME , you are connected on `tty`"
your home is /root , you are connected on /dev/pts/1 # echo -e "/ayour home is $HOME , you are connected on `tty`" your home is /root , you are connected on /dev/pts/1 #
本例中
在e c h o命令输出之后附加换行,可以使用/ n选项:/007或/a你可以让终端铃响一声 显示出$ H O M E目录, 并且可以让系统执行t t y命令(注意,该命令用键盘左上角的符号,法语中的抑音符引起来,不是单引号 )。
$ cat echod
编辑一个新echod,如上内容,然后运行输出如下:#!/bin/sh echo -e "this echo's 3 new lines/n/n/n" echo "OK"
$ ./echod
在e c h o语句中使用跳格符,记住别忘了加反斜杠/:this echo's 3 new lines OK $
$ echo -e "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的文件中:
$ echo "The log files have all been done"> myfile
或者可以追加到一个文件的末尾,这意味着不覆盖原有的内容:
$ echo "$LOGNAME carried them out at `date`">>myfile
现在让我们看一下m y f i l e文件中的内容:
The log files have all been done
引号是一个特殊字符,所以必须要使用反斜杠/来使s h e l l忽略它的特殊含义。sam carried them out at 六 11月 13 12:54:32 CST 2004 假设你希望使用e c h o命令输出这样的字符串:“/ d e v / r m t 0”,那么我们只要在引号前面加上反斜杠/即可:
$ echo "/"/dev/rmt0"/"
"/dev/rmt0" $ |
|
|
|
|
|
exec: e x e c命令可以用来替代当前s h e l l;换句话说,并没有启动子s h e l l。使用这一命令时任何现有环境都将会被清除,并重新启动一个s h e l l。它的一般形式为: exec command 其中的c o m m a n d通常是一个s h e l l脚本。 我所能够想像得出的描述e x e c命令最贴切的说法就是:当这个脚本结束时,相应的会话可能就结束了。e x e c命令的一个常见用法就是在用户的. p r o f i l e最后执行时,用它来执行一些用于增强安全性的脚本。如果用户的输入无效,该 s h e l l将被关闭,然后重新回到登录提示符。e x e c还常常被用来通过文件描述符打开文件。 e x e c在对文件描述符进行操作的时候(也只有在这时),它不会覆盖你当前的s h e l l。 可以看网中人《shell十三问》第六节: 6) exec 跟 source 差在哪? 能把十三问一次性看完最好,不过对我来说还是有些难度,今天才弄清楚第四问,看了好久才明白,目前为止,看完1,2,3,4,及11 exec: e x e c命令可以用来替代当前s h e l l;换句话说,并没有启动子s h e l l。使用这一命令时任何现有环境都将会被清除,并重新启动一个s h e l l。它的一般形式为: exec command 其中的c o m m a n d通常是一个s h e l l脚本。 e x e c在对文件描述符进行操作的时候,它不会覆盖你当前的s h e l l。 source和exec的区别 1,我认为他们带的参数是不一样的 source通常是shell脚本,而exec不但可以把一个脚本当成参数,而且还可以把一个系统命令当参数,例如: exec ls 2,另外一个不同就是,exec任务执行完毕后,会执行类似logout的操作,而source执行完一个任务后返回当前的shell. 3,还有,他们的用途也不是一样的 |
|