⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unix的批处理 shell script.htm

📁 很好的参考书
💻 HTM
📖 第 1 页 / 共 3 页
字号:
<pre>    C Shell 有些特性和Bourne Shell一样,但有些不相同。这里介绍与Bourne Shell
不相同的地方。
</pre>

<pre>一、变数</pre>

<pre>    1. 字串变数
        这个部分和Bourne Shell的变数一样,只不过在设定变数值时不能使用Bourne
        Shell的方式,而必须打:</pre>

<pre>            set var=value</pre>

<pre>    2. 数字运算
        基本上C Shell 没有数字变数,但C Shell 却有简单的方法处理数字运算:</pre>

<pre>            @ var operator expression</pre>

<pre>        operator可以是C 语言中的=, +=, -=,......,而expression则是运算式。运
        算式的运算子如下:</pre>

<pre>            A. ()   改变计算的顺序
~@
            B. ~    位元NOT运算
@~~
               !    逻辑否定
            C. %    取馀数</pre>

<pre>            C. %    取馀数
               /    除
               *    乘
               -    减
               +    加
            D. &gt;&gt;   右移
               &lt;&lt;   左移
            E. &gt;    大於
               &lt;    小於
               &gt;=   大於等於
               &lt;=   小於等於
               !=   不等於
               ==   等於
            F. &amp;    位元AND运算
               ^    位元XOR运算
               |    位元OR 运算
            G. &amp;&amp;   逻辑AND
               ||   逻辑OR</pre>

<pre>        除此之外,我们也可以检验一个档案的状态,如下</pre>

<pre>            -n filename

</pre>

<pre>        而-n可为下列之一</pre>

<pre>            -d  档案是一个目录档案
            -e  档案存在
            -f  档案为一般的档案
            -o  使用者拥有这个档案
            -r  使用者可以读取这个档案
            -w  使用者可以写入这个档案
            -x  使用者可以执行这个档案
            -z  档案长度为0</pre>

<pre>        &lt;eg&gt;
            @ count = count + 1
            @ flag = -e /users/cc/mgtsai/mail &amp;&amp; -e /usr/spool/mail</pre>

<pre>    3. 阵列
        在C Shell 中,我们可以宣告阵列变数,方式如下</pre>

<pre>            set var=(val1 val2 ......)</pre>

<pre>        而var[1]之值为val1,var[2]之值为val2......。而$var代表整个阵列。我们
        可以用$#var 来计算阵列个数,也可以用$?var 来检查某个变数是否已宣告。
</pre>

<pre>    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的$$相同
        $&lt;          键盘输入
</pre>

<pre>二、执行命令</pre>

<pre>    基本上和Bourne Shell相同,只有一点在Bourne Shell中的&quot;.&quot; 命令在C Shell 中
    则为&quot;source&quot;命令。
</pre>

<pre>三、流程控制

</pre>

<pre>    在C Shell 中流程控制不像Bourne Shell中一般需要使用test命令。相反地,它和
    C 语言类似只要在条件中写出运□式即可。当运算结果不为零时,其值为真,为零
    时其值为伪。以下是C Shell的流程控制
    1. if
        语法如下</pre>

<pre>        if (expression) simple-command</pre>

<pre>    2. goto
        语法如下</pre>

<pre>        goto label</pre>

<pre>        这时程式会跳至以l&quot;label:&quot;开头的那一行执行</pre>

<pre>        &lt;eg&gt;
            if ($#argv == 2) goto goodargs
            echo 'Please use two arguments.'
            exit
            goodrags:
            ...

</pre>

<pre>    3. if then else
        这和Bourne Shell的if then, if then else, if then elif 相似。语法如下</pre>

<pre>        A.  if (expression) then
                commands
            endif</pre>

<pre>        B.  if (expression) then
                commands
            else
                commands
            endif</pre>

<pre>        C.  if (expression) then
                commands
            else if (expression) then
                commands
            else
                commands
            endif
</pre>

<pre>    4. foreach
        这和Bourne Shell的for in相似。语法如下</pre>

<pre>            foreach var (arg-list)
                commands
            end</pre>

<pre>    5. while
        这和Bourne Shell的while相似。语法如下</pre>

<pre>            while (expression)
                commands
            end</pre>

<pre>    6. break及continue
        这和Bourne Shell的break 及continue相似,是用来中断foreach 及while 回
        圈。</pre>

<pre>    7. switch
        这和Bourne Shell的case相似。语法如下</pre>

<pre>            switch (string)
              case pat1:
                commands1
              breaksw
              case pat2:
                commands2
              breaksw
              case pat3:
                commands3
              breaksw
            endsw
</pre>

<pre>□附录A    expr命令
</pre>

<pre>命令格式</pre>

<pre>    expr expression</pre>

<pre>叙述</pre>

<pre>    expression是由字串以及运算子所组成,每个字串或是运算子之间必须用空白隔开
    。下表是运算子的种类及功能,而优先顺序则以先後次序排列,我们可以利用小括
    号来改变运算的优先次序。其运算结果则输出至标准输出上。</pre>

<pre>        :   字串比较。比较的方式是以两字串的第一个字母开始,而以第二个字串的
            字母结束。如果相同时,则输出第二个字串的字母个数,如果不同时则传
            回0 。
        *   乘法
        /   除法
        %   取馀数
        +   加法
        -   减法
        &lt;   小於
        &lt;=  小於等於
        =   等於
        !=  不等於
        &gt;=  大於等於
        &gt;   大於
        &amp;   AND运算
        |   OR运算</pre>

<pre>    当expression中含有&quot;*&quot;, &quot;(&quot;, &quot;)&quot; 等符号时,必须在其前面加上&quot;\&quot; ,以免被
    Shell 解释成其它意义。

</pre>

<pre>    &lt;eg&gt;    expr 2 \* \( 3 + 4 \)       其输出为14
</pre>

<pre>□附录B    test命令
</pre>

<pre>命令格式</pre>

<pre>    test expression</pre>

<pre>叙述</pre>

<pre>    expression中包含一个以上的判断准则以作为test评诂的标准。两准则间用&quot;-a&quot;代
    表逻辑AND 运算,&quot;-o&quot;代表逻辑OR运算,而在准则前放置一&quot;!&quot; 代表NOT 运算。如
    果没有括号,则优先权则为&quot;!&quot; &gt; &quot;-a&quot; &gt; &quot;-o&quot; 。和expr命令相同,相使用左右括
    号时,必须在其前面加上&quot;\&quot; 。以下是有关准则的叙述(合叙述时传回真,否则传
    回伪):</pre>

<pre>        string              string不为空白字串
        -n string           string的长度大於0
        -z string           string的长度等於0
        string1=string2     string1等於string2
        string1!=string2    string1不等於string2
        int1 -gt int2       int1大於int2
        int1 -ge int2       int1大於等於int2
        int1 -eq int2       int1等於int2
        int1 -ne int2       int1不等於int2
        int1 -le int2       int1小於等於int2
        int1 -lt int2       int1小於int2
        -r filename         档案可读取
        -w filename         档案可写入
        -x filename         档案可执行
        -f filename         档案为一般档
        -d filename         档案为目录
        -s filename         档案为非空的一般档</pre>

<pre>    &lt;eg&gt;     test -r &quot;$filename&quot; -a -s &quot;$filename&quot;</pre>

<p> </p>

<pre><strong><big>   <a href="../hkbx!.htm">返回“新客补习”</a></big></strong></pre>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -