利用vi等文本编辑器编写Shell脚本的格式是固定的,如下:

Yourcommandsgohere
chmod+xfilename.sh
下面我们从经典的“helloworld”入手,看一看最简单的Shell脚本的模样。
a="helloworld"
variable_name=variable_value
就不会输出“Hi,helloworlds”,而是输出“Hi,”。这是因为Shell把$as当成一个变量,而$as未被赋值,其值为空。正确的方法是:
关于变量,还需要知道几个与其相关的Linux命令。
!/#argumentsPrintif-lt;<<<>filesren
EXAMPLE:.in*9'HTM.1213OLD="NEW="#17commandfilesfor*doif[-f"23`"$file"s/${OLD}/${NEW}/g24[-f"25"27"mv""fi31if…;then
…
fi

[$a-lt3]判断$a的值是否小于3,同样-gt和-le分别表示大于或小于等于

["$a"="$b"]判断$a和$b的取值是否相等

$#表示包括$0在内的命令行参数的个数。在Shell中,脚本名称本身是$0,剩下的依次是$0、$1、$2…、${10}、${11},等等。$*表示整个参数列表,不包括$0,也就是说不包括文件名的参数列表。

十四、十五两句是赋值语句,分别将第一和第二参数赋值给变量OLD和NEW。紧接下来的两句是注释,注释下面的两条shift的作用是将参数列表中的第一个和第二个参数删除,后面的参数依次变为新的第一和第二参数,注意参数列表原本也不包括$0。

通过这个例子我们明白了ShellScript的编写规则,但还有几件事情需要讲述一下。

pattern1)
…;;
esac<
do
ehco"$COPIES";;
esac

getoptsoption_stringvariableoption_string中包含一串单字符选项,若getopts在命令行参数中发现了连字符,那么它会将连字符之后的字符与option_string进行比较,若匹配成功,则把变量variable的值设为该选项,若无匹配,则把变量的值设为?。有时候,选项还会带一个值,例如-c5等,这时要在option_string中该选项字母后面加上一个冒号,getopts发现冒号后,会读取该值,然后将该值放入特殊变量OPTARG中。这个命令比较复杂,如有需要,读者可以详细参阅Shell编写的相关资料。

selectvarin…;do
例如,下面这段程序的输出是:
selectvarin"a""b""c";do
echo$var
1)a
第三,ShellScript中也可以使用自定义的函数,其语法形式如下:
…

第四,我们也可以在Shell下调试ShellScript脚本,当然最简单的方法就是用echo输出查看变量取值了。Bash也提供了真正的调试方法,就是执行脚本的时候用-x参数。sh?xfilename.sh这会执行脚本并显示脚本中所有变量的取值,也可以使用参数-n,它并不执行脚本,只是返回所有的语法错误。