Linux的Shell种类众多,常见的有:BourneShell(/usr/bin/sh或/bin/sh)、Bourne Again Shell(/bin/bash)、CShell(/usr/bin/csh)、K Shell(/usr/bin/ksh)、Shell forRoot(/sbin/sh),等等。在本文中,我们关注的重点是Bash,也就是Bourne AgainShell,由于易用和免费,Bash在日常工作中被广泛使用;同时,Bash也是大多数Linux系统默认的Shell。
利用vi等文本编辑器编写Shell脚本的格式是固定的,如下:
程序必须以下面的行开始(必须方在文件的第一行):
#!/bin/sh
1.1.2 注释
#print hello world in the console window
1.1.3 变量
#对变量赋值(注意等号前后不能有空格,因为加空格后a被认为是命令名而不是一个变量):
a="hello world"
# 现在打印变量a的内容:
echo "A is:"
echo $a
1.1.4 环境变量
由export关键字处理过的变量叫做环境变量。#!/bin/sh
#print hello world in the console window
a="hello world"
echo "${a}s"
echo 'dirname'
if [ $# -lt 3 ]; then
echo "hello 1"
else
echo "hello 2"
fi
for file in $*; do
if [ -f $file ];then
echo $file
else
echo "${file} is not a file"
fi
done
Shell Script中if语句的条件部分要以分号来分隔。第三行中的[]表示条件测试,常用的条件测试有下面几种:
[ -f "$file" ] 判断$file是否是一个文件
[ $a -lt 3 ] 判断$a的值是否小于3,同样-gt和-le分别表示大于或小于等于
[ -x "$file" ] 判断$file是否存在且有可执行权限,同样-r测试文件可读性
[ -n "$a" ] 判断变量$a是否有值,测试空串用-z
[ "$a" = "$b" ] 判断$a和$b的取值是否相等
[ cond1 -a cond2 ] 判断cond1和cond2是否同时成立,-o表示cond1和cond2有一成立