编写Linux Shell程序(2)

@www.linuxidc.com:~/workspace/test$ myfile=/home/pandachow/workspace/test/matrix.cpp
@www.linuxidc.com:~/workspace/test$ echo $myfile
/home/pandachow/workspace/test/matrix.cpp

上面的例子中,可以看到,开始将/home/.../matrix.cpp这个字符串(也就是路径)赋给了myfile这个变量名,当然是我们的自定义变量。然后再echo $myfile的时候,就看到了该文件的路径名。

在shell中的输入/输出可以使用read命令来由标准输入读取数据,然后赋给指定变量。一般格式为:
read 变量1 [变量2].......

shell中的特殊字符,shell里除使用普通字符意外,还会使用一些特殊字符,他们都有一些特殊的含义,在使用的时候需要注意他们表示的意义和作用范围。
1. 通配符,通配符主要用于模式匹配。例如文件名匹配,路径名搜索,字符串查找等等。
2. 引号,引号分为单引号和双引号。双引号里面除了$, \ 和倒引号仍然保留其特殊用途 ,其余字符均视为普通字符串。单引号里面所有的字符都视作普通字符串。

输入输出重定向
1. 输入重定向,输入重定向(<) 是指将文件的内容输出到电脑屏幕上,也就是显示在终端里。
2. 输出重定向,输出重定向( >) 是指将一个命令(或可执行程序)的标准输出重定向到指定文件。这样改命令的输出结果就不在屏幕上显示,而是写入指定的文件中。上面的例子中,可以看到,开始将/home/.../matrix.cpp这个字符串(也就是路径)赋给了myfile这个变量名,当然是我们的自定义变量。然后再echo $myfile的时候,就看到了该文件的路径名。

@www.linuxidc.com:~/workspace/test$ who >abc
@www.linuxidc.com:~/workspace/test$ ls
@www.linuxidc.com:~/workspace/test$ cat abc
pandachow tty7         2011-02-18 02:19 (:0)
pandachow pts/0        2011-02-18 03:16 (:0.0)

在上面的例子中,可以看到,命令who的结果并没有显示在终端里,而是被写入一个abc文件(这个文件可以事先不存在,执行输出重定向的时候系统自动创建),cat这个abc文件之后,可以看到who的结果已经被写入了abc这个文件当中。

注释,管道和后台命令
1. 注释。如前面所介绍的,shell程序中的注释使用#号。
2. 管道线。在Linux中,管道是用竖杠(|)来隔开若干个命令组成的序列,例如

@www.linuxidc.com:~$ ls
a.sh               Desktop    Downloads         Music     Public   Selection_001.png  Templates  Videos     writing
Azureus Downloads  Documents  examples.desktop  Pictures  robocup  simspark           texmf      workspace
@www.linuxidc.com:~$ ls -l
total 156
-rw-r--r--  1 root      root         43 2011-02-18 13:09 a.sh
drwxr-xr-x  3 pandachow pandachow  4096 2011-02-10 17:11 Azureus Downloads
drwxr-xr-x  2 pandachow pandachow  4096 2011-02-16 01:03 Desktop
drwxr-xr-x  6 pandachow pandachow  4096 2011-02-11 17:10 Documents
drwxr-xr-x 14 pandachow pandachow  4096 2011-02-18 13:16 Downloads
-rw-r--r--  1 pandachow pandachow   179 2010-12-03 15:26 examples.desktop
drwxr-xr-x  2 pandachow pandachow  4096 2010-12-03 17:45 Music
drwxr-xr-x  3 pandachow pandachow  4096 2011-02-18 13:15 Pictures
drwxr-xr-x  2 pandachow pandachow  4096 2010-12-03 17:45 Public
drwx------ 14 pandachow root       4096 2011-02-16 20:15 robocup
-rw-r--r--  1 pandachow pandachow 92986 2011-02-18 14:37 Selection_001.png
drwxr-xr-x  6 root      root       4096 2010-12-31 12:25 simspark
drwxr-xr-x  2 pandachow pandachow  4096 2010-12-03 17:45 Templates
drwxr-xr-x  4 pandachow pandachow  4096 2011-01-19 00:44 texmf
drwxr-xr-x  6 pandachow pandachow  4096 2011-02-10 17:58 Videos
drwxr-xr-x  5 pandachow pandachow  4096 2011-01-11 17:48 workspace
-rw-r--r--  1 pandachow pandachow    39 2011-02-15 21:57 writing
@www.linuxidc.com:~$ ls $HOME |wc -l
17
@www.linuxidc.com:~$ ls -l $HOME |wc -l
18

前面是ls -l $HOME,等同于:ls -l /home/pandachow,因此是列出/home/pandachow/这个目录下的所有文件名,并显示他们的权限,管道线后面跟着的是wc -l,这个是显示文本行数,在列出文件名之后使用这个命令就是列出当前目录下文件的数目+1,这里显示18个是已经包括了一个前面统计的total 156这一行。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwswyf.html