shell基础Unix系统 -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

    }} Shell变量名使用的特殊字符 $# 传送给命令Shell的参数序号 $- 在Shell启动或使用set命令时提供选项 $? 上一条命令执行后返回的值 $$ 当前shell的进程号 $! 上一个子进程的进程号 $@ 所有的参数,每个都用双括号括起 $* 所有参数,用双括号括起 $n 位置参

    }}

    Shell变量名使用的特殊字符

    $# 传送给命令Shell的参数序号

    $- 在Shell启动或使用set命令时提供选项

    $? 上一条命令执行后返回的值

    $$ 当前shell的进程号

    $! 上一个子进程的进程号

    $@ 所有的参数,每个都用双括号括起

    $* 所有参数,用双括号括起

    $n 位置参数值,n表示位置

    当前shell名

    echo "$HOME $PATH"

    结果显示$/u/ice_walk/bin:/etc:/usr/bin

    而

    echo '$HOME $PATH' 结果显示$HOME $PATH

    shell的逃逸符是一个"\",表示其后的字符不具有特殊的含义或不是shell的函数

    echo $HOME $PATH

    结果显$$HOME /bin:/etc:/usr/bin:

    可以用变量和其他字符组成新的字,例如:

    SUN=sun

    echo $day

    sunday

    用户也可以在命令行上同时对多个变量赋值,赋值语句之间用空格分开:

    X=x Y=y

    注意变量赋值是从右到左进行的

    }}}

    expr命令将把一个算术表达式作为参数,通常形式如下:

    expr [数字] [操作符] [数字]

    由于Shell是按字符形式存储变量的,所以用户必须保证参加算术运算的操作数必须为数值,

shell基础Unix系统

。下面是有效的算术操作符:

    +   两个整数相加

    -   第一个数减去第二个数

    *   两整数相乘

    /   第一个整数除以第二个整数

    %   两整数相除,取余数

    用户不能单纯使用"*"做乘法,若输入:

    $expr 4*5

    系统将会报错,因为Shell看到"*"将会首先进行文件名替换。正确形式为:

    $expr 4 \* 5

    结果显示:20

    {{{{shell样例 注意:}}}}

    #!/bin/bash

    flag=1

    top=10000

    date >>/backup1/time.txt

    while [ $flag -lt $top ] -lt是小于 注意 需要用[ ],且注意 [后 和]后,都有空格

    do

    cd /backup1/check

    dd if=/dev/zero f=test_$flag.txt bs=1024 count=2000000

    rm -f test_$flag.txt

    flag=`expr $flag + 1`  注意 左边 需要用flag而不是$flag表示 给变量值,特别注意是=号,前后 不能有空格,而且 expr $flag + 1 需要用执行符``包括

    done

    }}}}}

    echo命令可以使用一些特殊的逃逸字符进行格式化输出,下面是这些字符及其含义:

    \b  Backspace

    \c  显示后不换行

    \f  在终端上屏幕的开始处显示

    \n  换行

    \r  回车

    \t  制表符

    \v  垂直制表符

    \   反斜框

    nnn 用1,2或3位8进制整数表示一个ASCII码字符

    echo -en $"\t\tPress 'I' to enter interactive startup."

    -e表示 允许\有新的意义

    -n表示 不换行 如果 和 “”内的参数 有冲突,以“”内为准

    }}

    测试字符串间的关系

    有关串的操作符如下:

    str1 = str2      当两个串有相同内容、长度时为真

    str1 != str2      当串str1和str2不等时为真

    -n str1 当串的长度大于0时为真(串非空)

    -z str1 当串的长度为0时为真(空串)

    str1  当串str1为非空时为真

    if [ -z "$IN_INITLOG" ]; 字符使用时 用""

    有关文件的测试

    使用test进行的第三类测试是测试文件的状态,用户可以测试文件是否存在,是否可写以及其他文件属性,

电脑资料

shell基础Unix系统》(https://www.unjs.com)。下面是文件测试时使用的选项。注意只有文件存在时,才有可能为真。

    -r file     用户可读为真

    -w file     用户可写为真

    -x file     用户可执行为真

    -f file     文件为正规文件为真

    -d file     文件为目录为真

    -c file     文件为字符特殊文件为真

    -b file     文件为块特殊文件为真

    -s file     文件大小非0时为真

    -t file     当文件描述符(默认为1)指定的设备为终端时为真

    复杂的条件测试(and 、or 、not)

    -a         与

    -o        或

    !        非

    就是组合条件了,任何高级语言中都有的(NOT 、AND 、OR),例如:

    $test -r em.null -a -s em.null

    $echo $?

    结果显示:1

    说明了em.null并不是可读并且非空的文件

    测试两个整数之间关系

    test命令与expr命令一样,也可以把字符转变成整数,然后对其操作。test命令对两个数进行比较,使用的操作符如下:

    int1 -eq int2    两数相等为真 equal   (eq)

    int1 -ne int2    两数不等为真 not equal  (ne)

    int1 -gt int2    int1大于int2为真  great  (gt)

    int1 -ge int2    int1大于等于int2为真 great equal (ge)

    int1 -lt int2    int1小于int2为真  less than (lt)

    int1 -le int2    int1小于等于int2为真 less than equal (le)

    本阶段 小程序:

    使用while循环使程序执行一次可以备份多个用户指定的目录。代码如下:

    echo "欢迎使用备份小程序"

    ANS=Y

    while [ $ANS = Y -o $ANS = y ]

    do

    echo _

    #读目录名

    echo "输入要备份的目录名:\c"

    read DIR

    if [ ! -d $DIR ]

    then

    echo "$DIR不是一个目录!"

    exit 1

    fi

    cd $DIR

    echo "请选择:"

    echo _

    echo "1 恢复数据到 $DIR"

    echo "2 备份$DIR的数据"

    echo

    echo "请选择:\c"

    read CHOICE

    case "$CHOICE" in

    1) echo "恢复中… …"

    cpio -i        2) echo "备份中… …"

    cpio -o >/dev/rmt0;;

    *) echo "选择无效"

    esac

    if [ $? -ne 0 ]

    then

    echo "cpio执行过程中出现问题"

    exit 2

    fi

    echo "继续别的目录吗?(Y/y)\c"

    read ANS

    done

    2。

    if [ $# -eq 0 ]

    then

    echo "Usage:x_shift2.sh 参数"

    exit 1

    fi

    3。

    I=1

    while [ $I -lt 10 ]

    do

    {

    echo "$I\c"

    I=`expr $I + 1`

    if [ $I -eq 3 ]

    then

    continue

    fi

    if [ $I -eq 7 ]

    then

    break

    fi

    }

    done

    原文转自:http://www.ltesting.net

最新文章