什么是shell?如何创建和运行linux shell程序?
1.建立和运行 shell 程序
什么是 shell 程序呢? 简单的说 shell 程序就是一个包含若干行 shell 或者 linux 命令的文件.象编写高级语
言的程序一样,编写一个 shell 程序需要一个文本编辑器.如 VI 等.在文本编辑环境下,依据 shell 的语法规则,
输入一些 shell/linux 命令行,形成一个完整的程序文件.
执行 shell 程序文件有三种方法
(1)#chmod +x file(在/etc/profile 中,加入 export PATH=${PATH}:~/yourpath,就可以在命令行下直接运
行,像执行普通命令一样)
(2)#sh file
(3)# . file
(4)#source file
在编写 shell 时,第一行一定要指明系统需要那种 shell 解释你的 shell 程序,如:#! /bin/bash,
#! /bin/csh,/bin/tcsh,还是#! /bin/pdksh .
2.shell 中的变量
(1)常用系统变量
$ # :保存程序命令行参数的数目
$ ? :保存前一个命令的返回码
$ 0 :保存程序名
$ * :以("$1 $2...")的形式保存所有输入的命令行参数
$ @ :以("$1""$2"...)的形式保存所有输入的命令行参数
(2)定义变量
shell 语言是非类型的解释型语言,不象用 C++/JAVA 语言编程时需要事先声明变量.给一个变量赋值,实际上
就是定义了变量.
在 linux 支持的所有 shell 中,都可以用赋值符号(=)为变量赋值.如:
abc=9 (bash/pdksh 不能在等号两侧留下空格 )
set abc = 9 (tcsh/csh)
由于 shell 程序的变量是无类型的,所以用户可以使用同一个变量时而存放字符时而存放整数.如:
name=abc (bash/pdksh)
set name = abc (tcsh)
在变量赋值之后,只需在变量前面加一个$去引用.如:
echo $abc
(3)位置变量
当运行一个支持多个命令行参数的 shell 程序时,这些变量的值将分别存放在位置变量里.
其中第一个参数存放在位置变量 1,第二个参数存放在位置变量 2,依次类推...,shell 保留
这些变量,不允许用户以令外的方式定义他们.同别的变量,用$符号引用他们.
3.shell 中引号的使用方法
shell 使用引号(单引号/双引号)和反斜线("\")用于向 shell 解释器屏蔽一些特殊字符.反引号(")对 shell
则有特殊意义.如:
abc="how are you" (bash/pdksh)
set abc = "how are you" (tcsh)
这个命令行把三个单词组成的字符串 how are you 作为一个整体赋值给变量 abc.
abc1='@LOGNAME,how are you!' (bash/pdksh)
set abc1='$LOGNAME,how are you!' (tcsh)
abc2="$LOGNAME,how are you!" (bash/pdksh)
set abc2="$LOGNAME,how are you!" (tcsh)
LOGNAME 变量是保存当前用户名的 shell 变量,假设他的当前值是:wang.执行完两条命令后,abc1 的内容是:
$LOGNAME, how are you!.而 abc2 的内容是;wang, how are you!.象单引号一样,反斜线也能屏蔽所有特殊字
符.但是他一次只能屏蔽一个字符.而不能屏蔽一组字符.
反引号的功能不同于以上的三种符号.他不具有屏蔽特殊字符的功能.但是可以通过他将一个命令的运行结果传
递给另外一个命令.如:
contents=`ls` (bash/pdksh)
set contents = `ls` (tcsh)
(1)、首先建立/var/spool/hylafax/etc/mailfax.sh文件,内容如下:
#!/bin/sh
# mailfax - email to fax gateway for qmail.
#
TMPVAR=${SENDER//\`/}
TMPVAR=${TMPVAR//\$\(/}
SENDER=${TMPVAR//\)/}
/usr/bin/faxmail | /usr/bin/sendfax \
-f "$SENDER" \
-d "$EXT2@`/usr/bin/expr \"$HOST\" : '\(.*\)\.fax$'`"
(2)、其次,建立alias的点文件,位于/var/qmail/alias/.qmail-fax-default,内容如下:
| /var/spool/hylafax/etc/mailfax.sh
然后在/var/qmail/control/virtualdomains里加入下列行
.fax:fax
OK,现在可以实现Mail到Fax的转送了,当通过mail发送fax的时候,需要这样做:
收件人地址只要写成格式:
someone@65648905.fax
就可以了。
如此,就可以实现由Mail到Fax的发送了,这个是对Qmail而言的,其他的自己琢磨吧。
存在的问题:中文的转译上有问题,那位知道的,告诉我:riches2008@163.com,或者qq:9613831
(二)Fax to Mail
这个简单,本身Hylafax就可以支持Fax2mail的功能,只要建立对应的配置文件,就可以了。
建立/var/spool/hylafax/etc/users.conf和dest.conf文件,将要转发的传真文件和邮箱帐号对应
例如,假设对发送号码为65648905的传真件,自动转送到postmaster@smart.com这个邮箱里,只要:
建立user.conf文件:
1:1:postmaster@ecom.cn iang:fengbao:TIFF:0:1:0
建立dest.conf文件:
65648905&1
注意这两个文件的属性,要能够被uucp:uucp读取。
然后重新启动hylafax服务就可以了。
I will post some code on here ...
Subscribe to:
Posts (Atom)