elif (test \"$word2\" = \"$word3\"
then
echo \'Match: words 2 & 3\'
else
echo \'No match\'
fi
4. for in 语法以及流程图如下
for var in arg-list
do
commands
done
for a in xx yy zz
do
echo $a
done
结果如下:
xx yy yy zz
5. for 语法以及流程图如下
for var
do commands
done
档名:lstarg
for a
do
echo $a
done
$lstarg xx yy zz
xx yy yy zz
6. while 语法以及流程图如下
while (condition)
do
commands
done
number=0
while (test $number -lt 10)
do
echo \"$number\\c\"
number=`expr $number + 1`
done
echo
结果如下: 0123456789
7. until 语法以及流程图如下
until (condition)
do
commands
done
它和while 的不同只在於while 是在条件为真时执行回圈,而until 是在条件 为假时执行回圈。
8. break及continue 这两者是用於for, while, until 等回圈控制下。break 会跳至done後方执行 ,而continue会跳至done执行,继续执行回圈。
9. case 语法以及流程图如下
case str in
pat1) commands1;;
pat2) commands2;;
pat3) commands3;;
esac
而pat 除了可以指定一些确定的字串,也可以指定字串的集合,如下
* 任意字串
? 任意字元
[abc] a, b, 或c三字元其中之一
[a-n] 从a到n的任一字元
| 多重选择
echo \'Enter A, B, or C: \\c\'
read letter
case $letter in
A|a) echo \'You entered A.\';;
B|b) echo \'You entered B.\';;
C|c) echo \'You entered C.\';;
*) echo \'Not A, B, or C\';;
esac
10. 函数 格式如下 function-name() { commands } 而要呼叫此函数,就像在命令列下直接下命令一般。
□C Shell C Shell 有些特性和Bourne Shell一样,但有些不相同。这里介绍与Bourne Shell 不相同的地方。
一、变数
1. 字串变数 这个部分和Bourne Shell的变数一样,只不过在设定变数值时不能使用Bourne Shell的方式,而必须打:
set var=value
2. 数字运算 基本上C Shell 没有数字变数,但C Shell 却有简单的方法处理数字运算:
@ var operator expression
operator可以是C 语言中的=, +=, -=,......,而expression则是运算式。运 算式的运算子如下:
A. () 改变计算的顺序 ~@
B. ~ 位元NOT运算 @~~ ! 逻辑否定
C. % 取馀数 C. % 取馀数 / 除 * 乘 - 减 + 加
D. >> 右移 << 左移
E. > 大於 < 小於 >= 大於等於 <= 小於等於 != 不等於 == 等於
F. & 位元AND运算 ^ 位元XOR运算 | 位元OR 运算
G. && 逻辑AND || 逻辑OR
除此之外,我们也可以检验一个档案的状态,如下
-n filename
而-n可为下列之一
-d 档案是一个目录档案
-e 档案存在
-f 档案为一般的档案
-o 使用者拥有这个档案
-r 使用者可以读取这个档案
-w 使用者可以写入这个档案
-x 使用者可以执行这个档案
-z 档案长度为0
@ count = count + 1
@ flag = -e /users/cc/mgtsai/mail && -e /usr/spool/mail
3. 阵列
在C Shell 中,我们可以宣告阵列变数,方式如下
set var=(val1 val2 ......) 而var[1]之值为val1,var[2]之值为val2......。而$var代表整个阵列。我们 可以用$#var 来计算阵列个数,也可以用$?var 来检查某个变数是否已宣告。
4. 特殊变数
$argv 和Bourne Shell的$*相似,只不过这是一个阵列。
$argv[n] 和Bourne Shell的$n相同,但不受个数限制。
$#argv 和Bourne Shell的$#相同
$home 和Bourne Shell的$HOME相同
$path 和Bourne Shell的$PATH相似,只不过这是一个阵列
$prompt 和Bourne Shell的$PS1相同
$shell Shell的路径名称 $status 和Bourne Shell的$?相同
$$ 和Bourne Shell的$$相同
$< 键盘输入
二、执行命令
基本上和Bourne Shell相同,只有一点在Bourne Shell中的\".\" 命令在C Shell 中 则为\"source\"命令。