红联Linux门户
Linux帮助

Shell Script(bash)--教学例

发布时间:2006-03-12 00:31:27来源:红联作者:Linux培训部长
"Hello world" Shell Script
照传统程式教学例,这一节介绍Shell Script的"Hello World"如何撰写。



--------------------------------------------------------------------------------

#!/bin/sh
# Filename : hello
echo "Hello world!"

--------------------------------------------------------------------------------

大家应该会注意到第一行的"#!/bin/sh"。在UNIX下,所有的可执行Script,不管是那一种语言,其开头都是"#!",例如Perl是"#!/usr/bin/perl",tcl/tk是"#!/usr/bin/wish",看您要执行的Script程式位置在那里。您也可以用"#!/bin/bash"、"#!/bin/tcsh"等等,来指定使用特定的Shell。
echo是个bash的内建指令。



--------------------------------------------------------------------------------

接下来,执行hello这个script:
要执行一个Script的方式有很多种。



--------------------------------------------------------------------------------

第一种 : 将hello这个档案的权限设定为可执行。
[foxman@foxman bash]# chmod 755 hello
执行
[foxman@foxman bash]# ./hello
hello world



--------------------------------------------------------------------------------

第二种 : 使用bash内建指令"source"或"."。
[foxman@foxman bash]# source hello
hello world

[foxman@foxman bash]# . hello
hello world



--------------------------------------------------------------------------------

第三种 : 直接使用sh/bash/tcsh指令来执行。
[foxman@foxman bash]# sh hello
hello world

[foxman@foxman bash]# bash hello
hello world



--------------------------------------------------------------------------------

Bash执行选项

--------------------------------------------------------------------------------

-c string : 读取string来当命令。
-i : 互动介面。
-s : 由stdin读取命令。
- : 取消往後选项的读取。
-norc : 不要读~/.bashrc来执行。
-noprofile : 不要读/etc/profile、~/.bash_profile、~/.bash_login、~/.profile等等来执行。
-rcfile filename : 执行filename,而非~/.bashrc
-version : 显示版本。
-quiet : 启动时不要哩唆。
-login : 确保bash是个login shell。
-nobraceexpansion : 不要用curly brace expansion({}符号展开)。
-nolineediting : 不用readline来读取命令列。
-posix : 改采Posix 1003.2标准。
文章评论

共有 10 条评论

  1. wangls66 于 2008-03-11 12:40:38发表:

    啥意思???

  2. robertmaggie 于 2008-01-02 11:39:48发表:

    知道不知道是什么意思啊 就顶

  3. solidserver 于 2006-09-20 02:24:28发表:

    dddddddddddddd

  4. solidserver 于 2006-09-20 02:24:24发表:

    dddddddddddddddd

  5. solidserver 于 2006-09-20 02:24:19发表:

    ddddddddddddd

  6. solidserver 于 2006-09-20 02:24:14发表:

    ddddddddddddddddd

  7. solidserver 于 2006-09-20 02:24:07发表:

    dddddddddd

  8. solidserver 于 2006-09-20 02:24:02发表:

    dddddddddd

  9. solidserver 于 2006-09-20 02:23:57发表:

    ddddddd

  10. solidserver 于 2006-09-20 02:23:36发表:

    下面这段 代码很经典和大家分享一下
    #!/bin/ksh
    leave=no
    while [ $leave = no ]
    do
    clear
    cat<<++
    MAIN MENU
    1)Print current working directory
    2)List all files in current directory
    3)Print taday's date and time
    4)Display contents of a file
    5)Create backup file copies
    x)Exit
    ++
    echo Please enter your selection $USER
    read selection
    case $selection in
    1)pwd;;
    2)ls -l;;
    3)date;;
    4)
    echo "Enter a filename"
    read fname
    if [ -r $fname ]
    then
    more $fname
    else
    echo "menu:Cannot access file $fname"
    fi
    ;;
    5)
    echo Enter filenames
    read fnames
    for fn in $fnames
    do
    if [ -r $fn ]
    then
    cp $fn $fn.bak
    else
    echo "menu:Cannot access file $fn"
    fi
    done
    ;;
    x)leave=yes;;
    *)echo "invalid choice .try again.";;
    esac
    echo "Press enter to continue \c"
    read hold
    done
    exit 0
    下面这段 代码很经典和大家分享一下
    #!/bin/ksh
    leave=no
    while [ $leave = no ]
    do
    clear
    cat<<++
    MAIN MENU
    1)Print current working directory
    2)List all files in current directory
    3)Print taday's date and time
    4)Display contents of a file
    5)Create backup file copies
    x)Exit
    ++
    echo Please enter your selection $USER
    read selection
    case $selection in
    1)pwd;;
    2)ls -l;;
    3)date;;
    4)
    echo "Enter a filename"
    read fname
    if [ -r $fname ]
    then
    more $fname
    else
    echo "menu:Cannot access file $fname"
    fi
    ;;
    5)
    echo Enter filenames
    read fnames
    for fn in $fnames
    do
    if [ -r $fn ]
    then
    cp $fn $fn.bak
    else
    echo "menu:Cannot access file $fn"
    fi
    done
    ;;
    x)leave=yes;;
    *)echo "invalid choice .try again.";;
    esac
    echo "Press enter to continue \c"
    read hold
    done
    exit 0